home *** CD-ROM | disk | FTP | other *** search
- #include <windows.h>
- #include <commdlg.h>
- #include <stdio.h>
- #include "winmovie.h"
- #include "winmovie.rch"
- #include "mpgmovie.h"
-
- #ifdef USE_CTL3D
- #include "ctl3ds.h"
- #endif
-
- /*
- Names
- */
- #define IconName "MPGMovieICON"
- #define ClassName "MPGMovieCLASS"
- #define CaptionName "MPEG Player"
-
- #define Section "Setting"
-
- #define TEXT_WIDTH 140
- #define FRAME_WIDTH 10
- #define FRAME_HEIGHT 10
-
- #define COLOR RGB(192,192,192)
- /*
- Global Variables
- */
- HANDLE MainInst = NULL;
- HANDLE MainAccel;
- HWND MainWnd = NULL;
- HWND LeftChannelWnd = NULL;
- HWND RightChannelWnd = NULL;
- HWND WndDisplayX = NULL;
- HWND WndDisplayY = NULL;
- HBRUSH MainBrush = NULL;
- WORD DisplayX = 15;
- WORD DisplayY = 5;
- int DefaultX = 15;
- int DefaultY = 5;
- WORD LeftChannel = 50;
- WORD RightChannel = 50;
- #define MaxVolume 63
- #define MinVolume 0
- int WinWidth,WinHeight;
- int factor = 3;
- int Frequency = 3;
- int CheckMediaChanged = 0;
- WORD ColorR;
- WORD ColorG;
- WORD ColorB;
- BOOL CmdFile = 0;
- int VGAStatus = 1;
- int PTSFlag = 0;
- int InternalMode = 0;
- char MOVIEINI[] = "MPMOVIE.INI";
-
- /*
- */
- char CurTitle[256];
- void NewSetWindowText(HWND wnd,LPSTR lsptr)
- {
- lstrcpy(CurTitle,lsptr);
- SetWindowText(wnd,CurTitle);
- }
-
- /*
- Common Dialog Variables
- */
- #define MAXFILENAME 256
- #define MAXCUSTFILTER 40
- OPENFILENAME OpenOfn;
- char szTitle[] = "Open a MPEG file";
- char szOpenFilterSpec[] =
- "ISO CD 11172 MPEG\0*.mpg\0\
- MPEG Video bitstream\0*.vbs\0\
- MPEG Audio bitstream\0*.abs\0\
- All files\0*.*\0\0";
- char szFileTitle[MAXFILENAME] = "";
- char szOpenFileName[MAXFILENAME] = "";
- char szCustFilterSpec[MAXCUSTFILTER] = "";
- char PathName[MAXFILENAME] = "";
-
- /*
- Status
- */
- int SaveOnExit = 1;
- int HasCDROM = 0;
- WORD PlayMode = 0;
- int FileOpened = 0; /* 1:File, 2:CD */
- int FileType = 0;
- int VideoFrequency= MOVIE_60HZ; /* 0:50Hz, 1:60Hz */
- BYTE StartTrack = 0;
- BYTE EndTrack = 0;
- BYTE Track = 0;
- BYTE CurTrack = 0;
- HCURSOR hCursorArrow;
- HCURSOR hCursorWait;
-
- /*
- Button Variables
- */
-
- #ifdef FIXBUGS
- #define BUTTON_WIDTH 32
- #define BUTTON_HEIGHT 32
- #define MAX_BUTTON 12
- int ButtonStatus[MAX_BUTTON] = { 0,-1,-1,-1,-1,-1,-1,-1,0,-1,0,0, };
- char *UpButtonName[MAX_BUTTON] =
- {
- "BMP_UP_FILE",
- "BMP_UP_CD",
- "BMP_UP_STOP",
- "BMP_UP_PLAY",
- "BMP_UP_FAST",
- "BMP_UP_SLOW",
- "BMP_UP_STEP",
- "BMP_UP_PAUSE",
- "BMP_UP_AUTO",
- "BMP_UP_MUTE",
- "BMP_UP_PUSH",
- "BMP_UP_TOP",
- };
-
- char *DownButtonName[MAX_BUTTON] =
- {
- "BMP_DN_FILE",
- "BMP_DN_CD",
- "BMP_DN_STOP",
- "BMP_DN_PLAY",
- "BMP_DN_FAST",
- "BMP_DN_SLOW",
- "BMP_DN_STEP",
- "BMP_DN_PAUSE",
- "BMP_DN_AUTO",
- "BMP_DN_MUTE",
- "BMP_DN_PUSH",
- "BMP_DN_TOP",
- };
-
- char *GrayButtonName[MAX_BUTTON] =
- {
- "BMP_GRAY_FILE",
- "BMP_GRAY_CD",
- "BMP_GRAY_STOP",
- "BMP_GRAY_PLAY",
- "BMP_GRAY_FAST",
- "BMP_GRAY_SLOW",
- "BMP_GRAY_STEP",
- "BMP_GRAY_PAUSE",
- "BMP_GRAY_AUTO",
- "BMP_GRAY_MUTE",
- "BMP_GRAY_PUSH",
- "BMP_GRAY_TOP",
- };
-
- HBITMAP UpButtonBitmap[MAX_BUTTON] =
- {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,};
- HBITMAP DownButtonBitmap[MAX_BUTTON] =
- {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,};
- HBITMAP GrayButtonBitmap[MAX_BUTTON] =
- {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,};
- #else
- #define BUTTON_WIDTH 32
- #define BUTTON_HEIGHT 32
- #define MAX_BUTTON 9
- int ButtonStatus[MAX_BUTTON] = { 0,-1,-1,-1,-1,0,-1,0,0, };
- char *UpButtonName[MAX_BUTTON] =
- {
- "BMP_UP_FILE",
- "BMP_UP_CD",
- "BMP_UP_STOP",
- "BMP_UP_PLAY",
- "BMP_UP_PAUSE",
- "BMP_UP_AUTO",
- "BMP_UP_MUTE",
- "BMP_UP_PUSH",
- "BMP_UP_TOP",
- };
-
- char *DownButtonName[MAX_BUTTON] =
- {
- "BMP_DN_FILE",
- "BMP_DN_CD",
- "BMP_DN_STOP",
- "BMP_DN_PLAY",
- "BMP_DN_PAUSE",
- "BMP_DN_AUTO",
- "BMP_DN_MUTE",
- "BMP_DN_PUSH",
- "BMP_DN_TOP",
- };
-
- char *GrayButtonName[MAX_BUTTON] =
- {
- "BMP_GRAY_FILE",
- "BMP_GRAY_CD",
- "BMP_GRAY_STOP",
- "BMP_GRAY_PLAY",
- "BMP_GRAY_PAUSE",
- "BMP_GRAY_AUTO",
- "BMP_GRAY_MUTE",
- "BMP_GRAY_PUSH",
- "BMP_GRAY_TOP",
- };
-
- HBITMAP UpButtonBitmap[MAX_BUTTON] =
- {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,};
- HBITMAP DownButtonBitmap[MAX_BUTTON] =
- {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,};
- HBITMAP GrayButtonBitmap[MAX_BUTTON] =
- {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,};
- #endif
-
- HBITMAP VolBitmapUp = NULL;
- HBITMAP VolBitmapDn0 = NULL;
- HBITMAP VolBitmapDn1 = NULL;
- int VolStatus = 0;
-
- HBITMAP SongBitmapGy = NULL;
- HBITMAP SongBitmapUp = NULL;
- HBITMAP SongBitmapDn0 = NULL;
- HBITMAP SongBitmapDn1 = NULL;
- int SongStatus = -1;
-
- /*
- Internal Functions
- */
- void SetTopMost(HWND wnd,int fTop)
- {
- RECT rect;
- int w,h;
-
- GetWindowRect(wnd,&rect);
- w = rect.right - rect.left;
- h = rect.bottom - rect.top;
- if (fTop)
- SetWindowPos(wnd,HWND_TOPMOST,rect.left,rect.top,w,h,SWP_SHOWWINDOW);
- else
- SetWindowPos(wnd,HWND_NOTOPMOST,rect.left,rect.top,w,h,SWP_SHOWWINDOW);
- }
-
- int AllocateResources(HWND wnd,HANDLE Inst)
- {
- RECT rect;
- int idx,Width,XX,X,limit;
-
- if ( (SongBitmapGy=LoadBitmap(Inst,"BMP_GY_SONG")) == NULL)
- {
- return 0;
- }
- if ( (SongBitmapUp=LoadBitmap(Inst,"BMP_UP_SONG")) == NULL)
- {
- return 0;
- }
- if ( (SongBitmapDn0=LoadBitmap(Inst,"BMP_DN0_SONG")) == NULL)
- {
- return 0;
- }
- if ( (SongBitmapDn1=LoadBitmap(Inst,"BMP_DN1_SONG")) == NULL)
- {
- return 0;
- }
-
- if ( (VolBitmapUp=LoadBitmap(Inst,"BMP_UP_VOL")) == NULL)
- {
- return 0;
- }
- if ( (VolBitmapDn0=LoadBitmap(Inst,"BMP_DN0_VOL")) == NULL)
- {
- return 0;
- }
- if ( (VolBitmapDn1=LoadBitmap(Inst,"BMP_DN1_VOL")) == NULL)
- {
- return 0;
- }
-
- for (idx=0;idx<MAX_BUTTON;idx++)
- {
- if ( (UpButtonBitmap[idx]=LoadBitmap(Inst,UpButtonName[idx]))
- == NULL)
- {
- return 0;
- }
- }
- for (idx=0;idx<MAX_BUTTON;idx++)
- {
- if ( (DownButtonBitmap[idx]=LoadBitmap(Inst,DownButtonName[idx]))
- == NULL)
- {
- return 0;
- }
-
- }
- for (idx=0;idx<MAX_BUTTON;idx++)
- {
- if ( (GrayButtonBitmap[idx]=LoadBitmap(Inst,GrayButtonName[idx]))
- == NULL)
- {
- return 0;
- }
-
- }
- Width = GetSystemMetrics(SM_CXBORDER);
- for (idx=0;idx<MAX_BUTTON;idx++)
- {
- if (CreateWindow("BUTTON",NULL,
- WS_CHILD|WS_VISIBLE|BS_OWNERDRAW|WS_TABSTOP,
- Width+idx*BUTTON_WIDTH,0,BUTTON_WIDTH,BUTTON_HEIGHT,
- wnd,IDM_START+idx,Inst,NULL) == NULL)
- {
- return 0;
- }
- }
-
- if (CreateWindow("BUTTON",NULL,
- WS_CHILD|WS_VISIBLE|BS_OWNERDRAW|WS_TABSTOP,
- Width+MAX_BUTTON*BUTTON_WIDTH,0,BUTTON_WIDTH,BUTTON_HEIGHT,
- wnd,IDM_VOL,Inst,NULL) == NULL)
- {
- return 0;
- }
-
- if (CreateWindow("BUTTON",NULL,
- WS_CHILD|WS_VISIBLE|BS_OWNERDRAW|WS_TABSTOP,
- Width+((MAX_BUTTON+1)*BUTTON_WIDTH),0,BUTTON_WIDTH,BUTTON_HEIGHT,
- wnd,IDM_SONG,Inst,NULL) == NULL)
- {
- return 0;
- }
-
- if (CreateWindow("STATIC","Left Channel:",
- WS_CHILD|WS_VISIBLE,
- Width+FRAME_WIDTH,BUTTON_HEIGHT+FRAME_HEIGHT,TEXT_WIDTH,20,
- wnd,(WORD)-1,Inst,NULL) == NULL)
- {
- return 0;
- }
- if (CreateWindow("STATIC","",
- WS_CHILD|WS_VISIBLE,
- Width+20+TEXT_WIDTH,BUTTON_HEIGHT+FRAME_HEIGHT,30,20,
- wnd,TXT_LEFTCHANNEL,Inst,NULL) == NULL)
- {
- return 0;
- }
- if (CreateWindow("STATIC","Right Channel:",
- WS_CHILD|WS_VISIBLE,
- Width+FRAME_WIDTH,BUTTON_HEIGHT+25+FRAME_HEIGHT,TEXT_WIDTH,20,
- wnd,(WORD)-1,Inst,NULL) == NULL)
- {
- return 0;
- }
- if (CreateWindow("STATIC","",
- WS_CHILD|WS_VISIBLE,
- Width+20+TEXT_WIDTH,BUTTON_HEIGHT+25+FRAME_HEIGHT,30,20,
- wnd,TXT_RIGHTCHANNEL,Inst,NULL) == NULL)
- {
- return 0;
- }
- GetClientRect(wnd,&rect);
- X = rect.right - rect.left;
- XX = Width + 55 + TEXT_WIDTH;
- limit = X - XX - 70;
- if ((LeftChannelWnd=CreateWindow("SCROLLBAR",NULL,
- WS_CHILD|WS_VISIBLE|WS_TABSTOP,
- XX,BUTTON_HEIGHT+2+FRAME_HEIGHT,limit,14,
- wnd,IDM_LEFTCHANNEL,Inst,NULL)) == NULL)
- {
- return 0;
- }
- if ((RightChannelWnd=CreateWindow("SCROLLBAR",NULL,
- WS_CHILD|WS_VISIBLE|WS_TABSTOP,
- XX,BUTTON_HEIGHT+27+FRAME_HEIGHT,limit,14,
- wnd,IDM_RIGHTCHANNEL,Inst,NULL)) == NULL)
- {
- return 0;
- }
- if ((WndDisplayX=CreateWindow("SCROLLBAR",NULL,
- WS_CHILD|WS_VISIBLE|WS_TABSTOP,
- XX,BUTTON_HEIGHT+50+FRAME_HEIGHT,limit,14,
- wnd,IDM_DISPLAY_X,Inst,NULL)) == NULL)
- {
- return 0;
- }
- if ((WndDisplayY=CreateWindow("SCROLLBAR",NULL,
- WS_CHILD|WS_VISIBLE|WS_TABSTOP,
- XX,BUTTON_HEIGHT+75+FRAME_HEIGHT,limit,14,
- wnd,IDM_DISPLAY_Y,Inst,NULL)) == NULL)
- {
- return 0;
- }
-
- if (CreateWindow("STATIC","Horizontal Align:",
- WS_CHILD|WS_VISIBLE,
- Width+FRAME_WIDTH,BUTTON_HEIGHT+50+FRAME_HEIGHT,TEXT_WIDTH,20,
- wnd,(WORD)-1,Inst,NULL) == NULL)
- {
- return 0;
- }
- if (CreateWindow("STATIC","",
- WS_CHILD|WS_VISIBLE,
- Width+20+TEXT_WIDTH,BUTTON_HEIGHT+50+FRAME_HEIGHT,30,20,
- wnd,TXT_DISPLAY_X,Inst,NULL) == NULL)
- {
- return 0;
- }
- if (CreateWindow("STATIC","Vertical Align:",
- WS_CHILD|WS_VISIBLE,
- Width+FRAME_WIDTH,BUTTON_HEIGHT+75+FRAME_HEIGHT,TEXT_WIDTH,20,
- wnd,(WORD)-1,Inst,NULL) == NULL)
- {
- return 0;
- }
- if (CreateWindow("STATIC","",
- WS_CHILD|WS_VISIBLE,
- Width+20+TEXT_WIDTH,BUTTON_HEIGHT+75+FRAME_HEIGHT,30,20,
- wnd,TXT_DISPLAY_Y,Inst,NULL) == NULL)
- {
- return 0;
- }
-
- if (CreateWindow("STATIC","Video Frequency:",
- WS_CHILD|WS_VISIBLE,
- Width+FRAME_WIDTH,BUTTON_HEIGHT+100+FRAME_HEIGHT,TEXT_WIDTH,20,
- wnd,(WORD)-1,Inst,NULL) == NULL)
- {
- return 0;
- }
- if (CreateWindow("BUTTON","60 Hz",
- WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON|WS_TABSTOP,
- Width+20+TEXT_WIDTH,BUTTON_HEIGHT+100+FRAME_HEIGHT,70,20,
- wnd,IDM_60HZ,Inst,NULL) == NULL)
- {
- return 0;
- }
- if (CreateWindow("BUTTON","50 Hz",
- WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON|WS_TABSTOP,
- Width+250,BUTTON_HEIGHT+100+FRAME_HEIGHT,70,20,
- wnd,IDM_50HZ,Inst,NULL) == NULL)
- {
- return 0;
- }
- if (CreateWindow("BUTTON","Reset",
- WS_CHILD|WS_VISIBLE|WS_TABSTOP,
- X-65,BUTTON_HEIGHT+2+FRAME_HEIGHT,55,25,
- wnd,IDM_RESET,Inst,NULL) == NULL)
- {
- return 0;
- }
-
- if (CreateWindow("BUTTON","OK",
- WS_CHILD|WS_VISIBLE|WS_TABSTOP,
- X-65,BUTTON_HEIGHT+50+FRAME_HEIGHT,55,25,
- wnd,IDM_OK,Inst,NULL) == NULL)
- {
- return 0;
- }
-
- OpenOfn.lStructSize = sizeof(OPENFILENAME);
- OpenOfn.hwndOwner = NULL;
- OpenOfn.lpstrFilter = szOpenFilterSpec;
- OpenOfn.lpstrCustomFilter = szCustFilterSpec;
- OpenOfn.nMaxCustFilter = MAXCUSTFILTER;
- OpenOfn.nFilterIndex = 1;
- OpenOfn.lpstrFile = szOpenFileName;
- OpenOfn.nMaxFile = MAXFILENAME;
- OpenOfn.lpstrInitialDir = PathName;
- OpenOfn.lpstrFileTitle = szFileTitle;
- OpenOfn.nMaxFileTitle = MAXFILENAME;
- OpenOfn.lpstrTitle = szTitle;
- OpenOfn.lpstrDefExt = "*";
- OpenOfn.Flags = OFN_HIDEREADONLY|OFN_PATHMUSTEXIST;
-
- HasCDROM = MOVIE_CDROM_Installed();
- if (HasCDROM) ButtonStatus[1] = 0;
- return 1;
- }
-
- void ReleaseResources(void)
- {
- int idx;
-
- if (SongBitmapGy != NULL) DeleteObject(SongBitmapGy);
- if (SongBitmapUp != NULL) DeleteObject(SongBitmapUp);
- if (SongBitmapDn0 != NULL) DeleteObject(SongBitmapDn0);
- if (SongBitmapDn1 != NULL) DeleteObject(SongBitmapDn1);
-
- if (VolBitmapUp != NULL) DeleteObject(VolBitmapUp);
- if (VolBitmapDn0 != NULL) DeleteObject(VolBitmapDn0);
- if (VolBitmapDn1 != NULL) DeleteObject(VolBitmapDn1);
- for (idx=0;idx<MAX_BUTTON;idx++)
- {
- if (UpButtonBitmap[idx] != NULL) DeleteObject(UpButtonBitmap[idx]);
- }
- for (idx=0;idx<MAX_BUTTON;idx++)
- {
- if (DownButtonBitmap[idx] != NULL) DeleteObject(DownButtonBitmap[idx]);
- }
- for (idx=0;idx<MAX_BUTTON;idx++)
- {
- if (GrayButtonBitmap[idx] != NULL) DeleteObject(GrayButtonBitmap[idx]);
- }
- }
-
- long MyCtlColor(WORD wParam,LONG lParam)
- {
- switch (HIWORD(lParam))
- {
- case CTLCOLOR_STATIC:
- SetBkColor(wParam,COLOR);
- return MainBrush;
- case CTLCOLOR_BTN:
- SetBkColor(wParam,COLOR);
- return MainBrush;
- }
- return 0L;
- }
-
- void DrawVolButton2(HWND wnd,int Choice)
- {
- HDC MemDC;
- HDC dc;
-
- dc = GetDC(wnd);
- MemDC = CreateCompatibleDC(dc);
- if (Choice)
- SelectObject(MemDC,VolBitmapDn1);
- else
- SelectObject(MemDC,VolBitmapDn0);
- BitBlt(dc,BUTTON_WIDTH*MAX_BUTTON,0,BUTTON_WIDTH,BUTTON_HEIGHT,MemDC,0,0,SRCCOPY);
- DeleteDC(MemDC);
- ReleaseDC(wnd,dc);
- }
-
- void DrawVolButton(HWND wnd)
- {
- HDC MemDC;
- HDC dc;
-
- dc = GetDC(wnd);
- MemDC = CreateCompatibleDC(dc);
- SelectObject(MemDC,VolBitmapUp);
- BitBlt(dc,BUTTON_WIDTH*MAX_BUTTON,0,BUTTON_WIDTH,BUTTON_HEIGHT,MemDC,0,0,SRCCOPY);
- DeleteDC(MemDC);
- ReleaseDC(wnd,dc);
- }
-
- void DrawSongButton2(HWND wnd,int Choice)
- {
- HDC MemDC;
- HDC dc;
-
- dc = GetDC(wnd);
- MemDC = CreateCompatibleDC(dc);
- if (Choice)
- SelectObject(MemDC,SongBitmapDn1);
- else
- SelectObject(MemDC,SongBitmapDn0);
- BitBlt(dc,BUTTON_WIDTH*(MAX_BUTTON+1),0,BUTTON_WIDTH,BUTTON_HEIGHT,MemDC,0,0,SRCCOPY);
- DeleteDC(MemDC);
- ReleaseDC(wnd,dc);
- }
-
- void DrawSongButton(HWND wnd)
- {
- HDC MemDC;
- HDC dc;
-
- dc = GetDC(wnd);
- MemDC = CreateCompatibleDC(dc);
- if (SongStatus == -1)
- SelectObject(MemDC,SongBitmapGy);
- else
- SelectObject(MemDC,SongBitmapUp);
- BitBlt(dc,BUTTON_WIDTH*(MAX_BUTTON+1),0,BUTTON_WIDTH,BUTTON_HEIGHT,MemDC,0,0,SRCCOPY);
- DeleteDC(MemDC);
- ReleaseDC(wnd,dc);
- }
-
- void DrawItems(HWND wnd)
- {
- HDC MemDC;
- HDC dc;
- int idx;
-
- dc = GetDC(wnd);
- MemDC = CreateCompatibleDC(dc);
- for (idx=0;idx<MAX_BUTTON;idx++)
- {
- if (ButtonStatus[idx] == 1)
- {
- SelectObject(MemDC,DownButtonBitmap[idx]);
- }
- else if (ButtonStatus[idx] == 0)
- {
- SelectObject(MemDC,UpButtonBitmap[idx]);
- }
- else if (ButtonStatus[idx] == -1)
- {
- SelectObject(MemDC,GrayButtonBitmap[idx]);
- }
- BitBlt(dc,BUTTON_WIDTH*idx,0,BUTTON_WIDTH,BUTTON_HEIGHT,MemDC,0,0,SRCCOPY);
- }
- DeleteDC(MemDC);
- ReleaseDC(wnd,dc);
- }
-
- void DrawItem(HWND wnd,int index)
- {
- HDC MemDC;
- HDC dc;
-
- dc = GetDC(wnd);
- MemDC = CreateCompatibleDC(dc);
- if (ButtonStatus[index] == 1)
- {
- SelectObject(MemDC,DownButtonBitmap[index]);
- }
- else if (ButtonStatus[index] == 0)
- {
- SelectObject(MemDC,UpButtonBitmap[index]);
- }
- else if (ButtonStatus[index] == -1)
- {
- SelectObject(MemDC,GrayButtonBitmap[index]);
- }
- BitBlt(dc,BUTTON_WIDTH*index,0,BUTTON_WIDTH,BUTTON_HEIGHT,MemDC,0,0,SRCCOPY);
- DeleteDC(MemDC);
- ReleaseDC(wnd,dc);
- }
-
- int SongNo = 0;
- void ConfigSongComboBox(HWND dlg)
- {
- HWND wnd;
- int limit;
- int idx;
- char temp[80];
-
- wnd = GetDlgItem(dlg,ID_SONG);
- limit = (int)(EndTrack - StartTrack);
- for (idx=1;idx<=limit;idx++)
- {
- wsprintf(temp,"Song %d",idx);
- SendMessage(wnd,LB_ADDSTRING,0,(LONG)((LPSTR)&temp[0]));
- SendMessage(wnd,LB_SETCURSEL,SongNo,0L);
- }
- }
-
- BOOL FAR PASCAL SongDlgProc(HWND dlg,WORD message,WORD wParam,LONG lParam)
- {
- HWND wnd;
-
- switch (message)
- {
- case WM_COMMAND:
- switch (wParam)
- {
- case ID_SONG:
- if (HIWORD(lParam) != LBN_DBLCLK) break;
- case IDOK:
- wnd = GetDlgItem(dlg,ID_SONG);
- SongNo = (int)SendMessage(wnd,LB_GETCURSEL,0,0L);
- if (SongNo < 0)
- {
- CurTrack = 0;
- EndDialog(dlg,FALSE);
- return(TRUE);
- }
- CurTrack = (BYTE)SongNo + 2;
- EndDialog(dlg,TRUE);
- return(TRUE);
- case IDCANCEL:
- CurTrack = 0;
- EndDialog(dlg,FALSE);
- return(TRUE);
- }
- break;
- case WM_INITDIALOG:
- CurTrack = 0;
- ConfigSongComboBox(dlg);
- return TRUE;
- }
- return FALSE;
- }
-
- int SelectSong(HWND wnd)
- {
- FARPROC lpProcTemp;
-
- lpProcTemp = MakeProcInstance(SongDlgProc,MainInst);
- DialogBox(MainInst,"SONGSELDLG",wnd,lpProcTemp);
- FreeProcInstance(lpProcTemp);
- return CurTrack;
- }
-
- BOOL WritePrivateProfileInt(LPSTR section,LPSTR item,int Value,LPSTR profile)
- {
- char buffer[80];
-
- wsprintf(buffer,"%d",Value);
- return WritePrivateProfileString(section,item,(LPSTR)buffer,profile);
- }
-
- BOOL FAR PASCAL BorderDlgProc(HWND dlg,WORD message,WORD wParam,LONG lParam)
- {
- static HWND WndR;
- static HWND WndG;
- static HWND WndB;
- static WORD OldR;
- static WORD OldG;
- static WORD OldB;
- WORD * NewValue;
- int temp;
- BOOL flag;
- HWND hScrollBar;
-
-
- switch (message)
- {
- case WM_HSCROLL:
- if ((HWND)HIWORD(lParam)==WndR)
- {
- NewValue = &ColorR;
- }
- else if ((HWND)HIWORD(lParam)==WndG)
- {
- NewValue = &ColorG;
- }
- else if ((HWND)HIWORD(lParam)==WndB)
- {
- NewValue = &ColorB;
- }
- else break;
- switch (wParam)
- {
- case SB_RIGHT:
- *NewValue = 31;
- break;
- case SB_LEFT:
- *NewValue = 0;
- break;
- case SB_PAGEUP:
- case SB_LINEUP:
- if (*NewValue > 0) *NewValue -= 1;
- break;
- case SB_LINEDOWN:
- case SB_PAGEDOWN:
- if (*NewValue < 31) *NewValue += 1;
- break;
- case SB_THUMBPOSITION:
- case SB_THUMBTRACK:
- *NewValue = LOWORD(lParam);
- break;
- default:
- break;
- }
- SetScrollPos(HIWORD(lParam),SB_CTL,*NewValue,TRUE);
- if ((HWND)HIWORD(lParam)==WndR)
- {
- SetDlgItemInt(dlg,IDEDIT_RED,*NewValue,FALSE);
- }
- else if ((HWND)HIWORD(lParam)==WndG)
- {
- SetDlgItemInt(dlg,IDEDIT_GREEN,*NewValue,FALSE);
- }
- else if ((HWND)HIWORD(lParam)==WndB)
- {
- SetDlgItemInt(dlg,IDEDIT_BLUE,*NewValue,FALSE);
- }
- MOVIE_SetBorder(ColorR,ColorG,ColorB);
- break;
- case WM_COMMAND:
- switch (wParam)
- {
- case IDEDIT_RED:
- case IDEDIT_GREEN:
- case IDEDIT_BLUE:
- if (wParam == IDEDIT_RED)
- {
- NewValue = &ColorR;
- hScrollBar = WndR;
- }
- else if (wParam == IDEDIT_GREEN)
- {
- NewValue = &ColorG;
- hScrollBar = WndG;
- }
- else if (wParam == IDEDIT_BLUE)
- {
- NewValue = &ColorB;
- hScrollBar = WndB;
- }
- temp = GetDlgItemInt(dlg,wParam,&flag,FALSE);
- if ( (!flag) || (temp < 0) || (temp > 31) )
- {
- SetDlgItemInt(dlg,wParam,*NewValue,FALSE);
- }
- else
- {
- *NewValue = temp;
- SetScrollPos(hScrollBar,SB_CTL,*NewValue,TRUE);
- }
- MOVIE_SetBorder(ColorR,ColorG,ColorB);
- break;
- case IDOK:
- WritePrivateProfileInt(Section,"BorderR",ColorR,MOVIEINI);
- WritePrivateProfileInt(Section,"BorderG",ColorG,MOVIEINI);
- WritePrivateProfileInt(Section,"BorderB",ColorB,MOVIEINI);
- if (!ButtonStatus[IDM_PUSH-IDM_START]) MOVIE_SetBorder(0,0,0);
- else MOVIE_SetBorder(ColorR,ColorG,ColorB);
- EndDialog(dlg,TRUE);
- return(TRUE);
- case IDCANCEL:
- ColorR = OldR;
- ColorG = OldG;
- ColorB = OldB;
- if (!ButtonStatus[IDM_PUSH-IDM_START]) MOVIE_SetBorder(0,0,0);
- else MOVIE_SetBorder(ColorR,ColorG,ColorB);
- EndDialog(dlg,FALSE);
- return(TRUE);
- }
- break;
- case WM_INITDIALOG:
- OldR = ColorR;
- OldG = ColorG;
- OldB = ColorB;
- SetDlgItemInt(dlg,IDEDIT_RED, ColorR,FALSE);
- SetDlgItemInt(dlg,IDEDIT_GREEN,ColorG,FALSE);
- SetDlgItemInt(dlg,IDEDIT_BLUE ,ColorB,FALSE);
- WndR = GetDlgItem(dlg,IDSCROLL_RED);
- WndG = GetDlgItem(dlg,IDSCROLL_GREEN);
- WndB = GetDlgItem(dlg,IDSCROLL_BLUE);
- SetScrollRange(WndR,SB_CTL,0,31,FALSE);
- SetScrollPos (WndR,SB_CTL,ColorR,TRUE);
- SetScrollRange(WndG,SB_CTL,0,31,FALSE);
- SetScrollPos (WndG,SB_CTL,ColorG,TRUE);
- SetScrollRange(WndB,SB_CTL,0,31,FALSE);
- SetScrollPos (WndB,SB_CTL,ColorB,TRUE);
- MOVIE_SetBorder(ColorR,ColorG,ColorB);
- return TRUE;
- }
- return FALSE;
- }
-
- void DefineBorder(HWND wnd)
- {
- FARPROC lpProcTemp;
-
- lpProcTemp = MakeProcInstance(BorderDlgProc,MainInst);
- DialogBox(MainInst,"BORDERDLG",wnd,lpProcTemp);
- FreeProcInstance(lpProcTemp);
- }
-
- void ResetAllButton(HWND wnd)
- {
- if (FileOpened == 1) MOVIE_CloseFile();
- FileOpened = 0;
- FileType = 0;
- SongStatus = -1;
- ButtonStatus[IDM_STOP-IDM_START] = -1;
- ButtonStatus[IDM_PLAY-IDM_START] = -1;
- #ifdef FIXBUGS
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = -1;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = -1;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = -1;
- #endif
- ButtonStatus[IDM_PAUSE-IDM_START] = -1;
- ButtonStatus[IDM_MUTE-IDM_START] = -1;
- DrawItems(wnd);
- DrawSongButton(wnd);
- NewSetWindowText(wnd,CaptionName);
- }
-
- int CheckCD(HWND wnd)
- {
- if (FileOpened != 2) return 1;
- SetCursor(hCursorWait);
- if (MOVIE_CDROM_IsDiscChanged())
- {
- SetCursor(hCursorArrow);
- if (!CheckMediaChanged) return 1;
- if (MessageBox(wnd,"Compact disc is changed. Stop playing now ?",CaptionName,MB_YESNO|MB_ICONQUESTION)
- == IDYES)
- {
- ResetAllButton(wnd);
- return 0;
- }
- }
- SetCursor(hCursorArrow);
- return 1;
- }
-
- int CheckCD2(HWND wnd)
- {
- SetCursor(hCursorWait);
- if (MOVIE_CDROM_IsDiscChanged())
- {
- SetCursor(hCursorArrow);
- if (!CheckMediaChanged) return 1;
- if (MessageBox(wnd,"Compact disc is changed. Stop playing now ?",CaptionName,MB_YESNO|MB_ICONQUESTION)
- == IDYES)
- {
- ResetAllButton(wnd);
- return 0;
- }
- }
- SetCursor(hCursorArrow);
- return 1;
- }
-
- void HelpInfo(HWND wnd)
- {
- static char HelpMsg[] =
- "Ctrl+O : Open MPEG file\n\
- Ctrl+C : Select Video CD\n\
- Ctrl+P : Play\n\
- Ctrl+S : Pause\n\
- Ctrl+R : Rewind\n\
- F2 : Configuration\n\
- ";
-
- MessageBox(wnd,HelpMsg,"Hot Keys",MB_OK|MB_ICONINFORMATION);
-
- }
-
- void SetVGAOutput(int flag)
- {
- if (VGAStatus == 0)
- {
- //SendMessage(MainWnd,WM_COMMAND,IDM_PAUSE,0L);
- }
- VGAStatus = flag;
- MOVIE_VGA_Output(VGAStatus);
- }
-
- void ProcessCommand(HWND wnd,WORD wParam,LONG lParam)
- {
- char Title[80];
- RECT rect;
- BYTE NewTrack;
- BOOL Status;
-
- switch (wParam)
- {
- case IDM_FILE:
- if (HasCDROM) CheckCD2(wnd);
- SetVGAOutput(1);
- if (PlayMode) SendMessage(wnd,WM_COMMAND,IDM_STOP,0L);
- if (CmdFile)
- {
- Status = TRUE;
- CmdFile = 0;
- }
- else
- {
- szOpenFileName[0] = 0;
- OpenOfn.hwndOwner = wnd;
- Status = GetOpenFileName((LPOPENFILENAME)&OpenOfn);
- }
- if (!Status) break;
- {
- if (FileOpened == 1) MOVIE_CloseFile();
- SetCursor(hCursorWait);
- FileType = MOVIE_OpenFile(szOpenFileName);
- SetCursor(hCursorArrow);
- if (FileType == MOVIE_AUDIO_FILE)
- {
- NewSetWindowText(wnd,szOpenFileName);
- FileOpened = 1;
- ButtonStatus[IDM_STOP-IDM_START] = 0;
- ButtonStatus[IDM_PLAY-IDM_START] = 0;
- #ifdef FIXBUGS
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = -1;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = -1;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = -1;
- #endif
- ButtonStatus[IDM_PAUSE-IDM_START] = -1;
- ButtonStatus[IDM_MUTE-IDM_START] = 0;
- DrawItems(wnd);
- MOVIE_Mute(ButtonStatus[IDM_MUTE-IDM_START]);
- }
- else if (FileType > 0)
- {
- NewSetWindowText(wnd,szOpenFileName);
- FileOpened = 1;
- ButtonStatus[IDM_STOP-IDM_START] = 0;
- ButtonStatus[IDM_PLAY-IDM_START] = 0;
- #ifdef FIXBUGS
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = 0;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = 0;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = 0;
- #endif
- ButtonStatus[IDM_PAUSE-IDM_START] = -1;
- ButtonStatus[IDM_MUTE-IDM_START] = 0;
- DrawItems(wnd);
- MOVIE_Mute(ButtonStatus[IDM_MUTE-IDM_START]);
- }
- else
- {
- NewSetWindowText(wnd,CaptionName);
- FileOpened = 0;
- ButtonStatus[IDM_STOP-IDM_START] = -1;
- ButtonStatus[IDM_PLAY-IDM_START] = -1;
- #ifdef FIXBUGS
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = -1;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = -1;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = -1;
- #endif
- ButtonStatus[IDM_PAUSE-IDM_START] = -1;
- ButtonStatus[IDM_MUTE-IDM_START] = -1;
- DrawItems(wnd);
- if (FileType == 0)
- MessageBox(wnd,"Invalid file format",CaptionName,MB_OK|MB_ICONSTOP);
- else
- MessageBox(wnd,"File not found",CaptionName,MB_OK|MB_ICONSTOP);
- }
- }
- PostMessage(MainWnd,WM_COMMAND,IDM_PLAY,0L);
- SongStatus = -1;
- break;
- case IDM_CD:
- if (CmdFile) CmdFile = 0;
- if (HasCDROM) CheckCD2(wnd);
- else break;
- SetVGAOutput(1);
- if (PlayMode) SendMessage(wnd,WM_COMMAND,IDM_STOP,0L);
- SetCursor(hCursorWait);
- SongStatus = -1;
- if (!MOVIE_CDROM_HasDisc())
- {
- SetCursor(hCursorArrow);
- MessageBox(wnd,"CD-ROM drive empty",CaptionName,MB_OK|MB_ICONSTOP);
- if (FileOpened == 2) ResetAllButton(wnd);
- break;
- }
- if (!MOVIE_CDROM_GetCDITitle((char far *)&Title[0]))
- {
- if (!MOVIE_CDROM_GetTrackNo(&StartTrack,&EndTrack))
- {
- SetCursor(hCursorArrow);
- MessageBox(wnd,"Cannot retrieve the number of tracks on the compact disc",CaptionName,MB_OK|MB_ICONSTOP);
- if (FileOpened == 2) ResetAllButton(wnd);
- break;
- }
- if ( ((EndTrack - StartTrack) < 1) && (StartTrack == 1))
- {
- SetCursor(hCursorArrow);
- MessageBox(wnd,"Compact disc not a Karaoke CD or Video CD",CaptionName,MB_OK|MB_ICONSTOP);
- if (FileOpened == 2) ResetAllButton(wnd);
- break;
- }
- SetCursor(hCursorArrow);
- if ( (EndTrack - StartTrack) <= 1 )
- NewTrack = EndTrack;
- else
- NewTrack = SelectSong(wnd);
- if (NewTrack != 0)
- {
- char temp[80];
-
- Track = NewTrack;
- if (FileOpened == 1) MOVIE_CloseFile();
- SetCursor(hCursorWait);
- if (!MOVIE_CDROM_SeekTrack(Track))
- {
- SetCursor(hCursorArrow);
- NewSetWindowText(wnd,CaptionName);
- ResetAllButton(wnd);
- wsprintf(temp,"Error seeking song %d",Track-1);
- MessageBox(wnd,temp,CaptionName,MB_OK|MB_ICONSTOP);
- break;
- }
- SetCursor(hCursorArrow);
- if ( (EndTrack - StartTrack) <= 1 )
- {
- NewSetWindowText(wnd,"VIDEO CD");
- }
- else
- {
- wsprintf(temp,"Karaoke CD: Song %d",Track-1);
- NewSetWindowText(wnd,temp);
- }
- SongStatus = 1;
- FileType = MOVIE_SYSTEM_LAYER;
- FileOpened = 2;
- ButtonStatus[IDM_STOP-IDM_START] = 0;
- ButtonStatus[IDM_PLAY-IDM_START] = 0;
- #ifdef FIXBUGS
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = 0;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = 0;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = 0;
- #endif
- ButtonStatus[IDM_PAUSE-IDM_START] = -1;
- ButtonStatus[IDM_MUTE-IDM_START] = 0;
- DrawItems(wnd);
- DrawSongButton(wnd);
- MOVIE_Mute(ButtonStatus[IDM_MUTE-IDM_START]);
- }
- else break;
- }
- else
- {
- int status;
-
- if (FileOpened == 1) MOVIE_CloseFile();
- SetCursor(hCursorWait);
- status = MOVIE_CDROM_SeekCDI();
- if (status != 0)
- {
- char temp[80];
-
- SetCursor(hCursorArrow);
- NewSetWindowText(wnd,CaptionName);
- ResetAllButton(wnd);
- wsprintf(temp,"Error seeking Video CD.Error code %d.",status);
- MessageBox(wnd,temp,CaptionName,MB_OK|MB_ICONSTOP);
- break;
- }
- SetCursor(hCursorArrow);
- NewSetWindowText(wnd,Title);
- FileType = MOVIE_SYSTEM_LAYER;
- FileOpened = 2;
- ButtonStatus[IDM_STOP-IDM_START] = 0;
- ButtonStatus[IDM_PLAY-IDM_START] = 0;
- #ifdef FIXBUGS
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = 0;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = 0;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = 0;
- #endif
- ButtonStatus[IDM_PAUSE-IDM_START] = -1;
- ButtonStatus[IDM_MUTE-IDM_START] = 0;
- DrawItems(wnd);
- MOVIE_Mute(ButtonStatus[IDM_MUTE-IDM_START]);
- }
- /* else if (FileOpened == 2) ResetAllButton(wnd); */
- SetCursor(hCursorArrow);
- PostMessage(MainWnd,WM_COMMAND,IDM_PLAY,0L);
- break;
- case IDM_STOP:
- {
- int DoStop;
-
- if (PlayMode==0) break;
- if (!FileOpened) break;
- if (ButtonStatus[IDM_PAUSE-IDM_START]==1)
- DoStop = 0;
- else
- DoStop = 1;
- PlayMode = 0;
- ButtonStatus[IDM_PLAY-IDM_START] = 0;
- ButtonStatus[IDM_PAUSE-IDM_START] = -1;
- if (FileType != MOVIE_AUDIO_FILE)
- {
- #ifdef FIXBUGS
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = 0;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = 0;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = 0;
- #endif
- }
- DrawItems(wnd);
- if (DoStop) MOVIE_Stop();
- MOVIE_SetBorder(ColorR,ColorG,ColorB);
- if (!InternalMode) SetVGAOutput(1);
- SetWindowText(wnd,CurTitle);
- break;
- }
- case IDM_PLAY:
- if (!FileOpened) break;
- if (!CheckCD(wnd)) break;
- if ((ButtonStatus[IDM_PAUSE-IDM_START]==0)&&(PlayMode==wParam))
- {
- if (!InternalMode)
- {
- if (ButtonStatus[IDM_TOP-IDM_START])
- SetVGAOutput(1);
- else
- SetVGAOutput(0);
- }
- break;
- }
- PlayMode = wParam;
- ButtonStatus[IDM_PLAY-IDM_START] = 1;
- ButtonStatus[IDM_PAUSE-IDM_START] = 0;
- if (FileType != MOVIE_AUDIO_FILE)
- {
- #ifdef FIXBUGS
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = 0;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = 0;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = 0;
- #endif
- }
- DrawItems(wnd);
- if (ButtonStatus[IDM_PUSH-IDM_START])
- MOVIE_SetBorder(ColorR,ColorG,ColorB);
- else
- MOVIE_SetBorder(0,0,0);
- MOVIE_Play();
- if (!InternalMode)
- {
- if (ButtonStatus[IDM_TOP-IDM_START])
- SetVGAOutput(1);
- else
- SetVGAOutput(0);
- }
- break;
- #ifdef FIXBUGS
- case IDM_SLOWPLAY:
- if (!FileOpened) break;
- if (FileType == MOVIE_AUDIO_FILE) break;
- if ((ButtonStatus[IDM_PAUSE-IDM_START]==0)&&(PlayMode==wParam)) break;
- if (!CheckCD(wnd)) break;
- PlayMode = wParam;
- ButtonStatus[IDM_PLAY-IDM_START] = 0;
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = 1;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = 0;
- ButtonStatus[IDM_PAUSE-IDM_START] = 0;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = 0;
- DrawItems(wnd);
- MOVIE_SlowPlay(factor);
- break;
- case IDM_FASTPLAY:
- if (!FileOpened) break;
- if (FileType == MOVIE_AUDIO_FILE) break;
- if ((ButtonStatus[IDM_PAUSE-IDM_START]==0)&&(PlayMode==wParam)) break;
- if (!CheckCD(wnd)) break;
- PlayMode = wParam;
- ButtonStatus[IDM_PLAY-IDM_START] = 0;
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = 0;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = 1;
- ButtonStatus[IDM_PAUSE-IDM_START] = 0;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = 0;
- DrawItems(wnd);
- MOVIE_FastPlay();
- break;
- case IDM_NEXT_FRAME:
- if (!FileOpened) break;
- if (FileType == MOVIE_AUDIO_FILE) break;
- if ((ButtonStatus[IDM_PAUSE-IDM_START]==0)&&(PlayMode==wParam)) break;
- if (!CheckCD(wnd)) break;
- PlayMode = wParam;
- ButtonStatus[IDM_PLAY-IDM_START] = 0;
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = 0;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = 0;
- ButtonStatus[IDM_PAUSE-IDM_START] = 0;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = 1;
- DrawItems(wnd);
- MOVIE_StepPlay();
- break;
- #endif
- case IDM_PAUSE:
- if (!FileOpened) break;
- if (PlayMode==0) break;
- if (ButtonStatus[IDM_PAUSE-IDM_START]) break;
- if (PlayMode==wParam) break;
- ButtonStatus[wParam-IDM_START] = 1;
- ButtonStatus[IDM_PLAY-IDM_START] = 0;
- if (FileType != MOVIE_AUDIO_FILE)
- {
- #ifdef FIXBUGS
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = 0;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = 0;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = 0;
- #endif
- }
- DrawItems(wnd);
- MOVIE_Pause();
- break;
- case IDM_AUTO_REWIND:
- ButtonStatus[wParam-IDM_START] ^= 1;
- DrawItem(wnd,wParam-IDM_START);
- break;
- case IDM_MUTE:
- if (FileType <= 0) break;
- ButtonStatus[wParam-IDM_START] ^= 1;
- DrawItem(wnd,wParam-IDM_START);
- MOVIE_Mute(ButtonStatus[IDM_MUTE-IDM_START]);
- break;
- case IDM_PUSH:
- GetWindowRect(wnd,&rect);
- ButtonStatus[wParam-IDM_START] ^= 1;
- DrawItem(wnd,wParam-IDM_START);
- if (ButtonStatus[IDM_PUSH-IDM_START])
- {
- MoveWindow(wnd,rect.left,rect.top,WinWidth,WinHeight+140,TRUE);
- MOVIE_SetBorder(ColorR,ColorG,ColorB);
- }
- else
- {
- MoveWindow(wnd,rect.left,rect.top,WinWidth,WinHeight,TRUE);
- MOVIE_SetBorder(0,0,0);
- }
- InvalidateRect(wnd,NULL,FALSE);
- break;
- case IDM_TOP:
- ButtonStatus[wParam-IDM_START] ^= 1;
- SetTopMost(wnd,ButtonStatus[wParam-IDM_START]);
- DrawItem(wnd,wParam-IDM_START);
- break;
- case IDM_60HZ:
- VideoFrequency = MOVIE_60HZ;
- MOVIE_SetVideoFrequency(VideoFrequency);
- CheckRadioButton(wnd,IDM_50HZ,IDM_60HZ,wParam);
- break;
- case IDM_50HZ:
- VideoFrequency = MOVIE_50HZ;
- MOVIE_SetVideoFrequency(VideoFrequency);
- CheckRadioButton(wnd,IDM_50HZ,IDM_60HZ,wParam);
- break;
- case IDM_RESET:
- DisplayX = DefaultX;
- DisplayY = DefaultY;
- SetScrollPos(WndDisplayX,SB_CTL,DisplayX,TRUE);
- SetDlgItemInt(wnd,TXT_DISPLAY_X,DisplayX,FALSE);
- SetScrollPos(WndDisplayY,SB_CTL,DisplayY,TRUE);
- SetDlgItemInt(wnd,TXT_DISPLAY_Y,DisplayY,FALSE);
- MOVIE_SetDisplayPosition(DisplayX,DisplayY);
- break;
- case IDM_OK:
- PostMessage(wnd,WM_COMMAND,IDM_PUSH,0L);
- break;
- case IDM_PTSNOTIFY:
- if (PTSFlag)
- {
- int Second;
- int Minute;
- int Hour;
- char temp[80];
-
- Second = (int)(lParam/90000L);
- Hour = Second / 3600;
- Second = Second % 3600;
- Minute = Second / 60;
- Second = Second % 60;
- wsprintf(temp,"%s[%2.2d:%2.2d:%2.2d]",(LPSTR)CurTitle,Hour,Minute,Second);
- SetWindowText(wnd,temp);
- }
- break;
- case IDM_NOTIFY:
- if (lParam == MOVIE_NOTIFY_EOF)
- {
- WORD SaveMode;
- int SaveStatus;
-
- SaveMode = PlayMode;
- SaveStatus = VGAStatus;
- InternalMode = 1;
- SendMessage(wnd,WM_COMMAND,IDM_STOP,0L);
- InternalMode = 0;
- if (ButtonStatus[IDM_AUTO_REWIND-IDM_START])
- {
- InternalMode = 1;
- SendMessage(wnd,WM_COMMAND,SaveMode,0L);
- InternalMode = 0;
- }
- else if (SongStatus == 1)
- {
- if (EndTrack != Track)
- {
- InternalMode = 1;
- SendMessage(wnd,WM_COMMAND,IDM_NEXTSONG,0L);
- //SendMessage(wnd,WM_COMMAND,IDM_PLAY,0L);
- InternalMode = 0;
- }
- else
- {
- Track = StartTrack + 1;
- InternalMode = 1;
- SendMessage(wnd,WM_COMMAND,IDM_PRESONG,0L);
- SendMessage(wnd,WM_COMMAND,IDM_PLAY,0L);
- InternalMode = 0;
- }
- //else
- //{
- // SendMessage(wnd,WM_COMMAND,IDM_VGA,0L);
- //}
- }
- else
- {
- SendMessage(wnd,WM_COMMAND,IDM_VGA,0L);
- }
- }
- else
- {
- int MsgStatus = IDYES;
-
- SendMessage(wnd,WM_COMMAND,IDM_PAUSE,0L);
- SetVGAOutput(1);
- if (lParam == MOVIE_READING_ERROR)
- {
- MsgStatus = MessageBox(wnd,"Error reading data. Stop playing now ?",CaptionName,MB_YESNO|MB_ICONQUESTION);
- }
- else if (lParam == MOVIE_VIDEO_DECODE_ERROR)
- {
- MsgStatus = MessageBox(wnd,"Error decoding video. Stop playing now ?",CaptionName,MB_YESNO|MB_ICONQUESTION);
- }
- else if (lParam == MOVIE_VIDEO_FIFO_ERROR)
- {
- MsgStatus = MessageBox(wnd,"Video FIFO overflow or underflow. Stop playing now ?",CaptionName,MB_YESNO|MB_ICONQUESTION);
- }
- else if (lParam == MOVIE_VIDEO_ACCESS_ERROR)
- {
- MsgStatus = MessageBox(wnd,"Host access error. Stop playing now ?",CaptionName,MB_YESNO|MB_ICONQUESTION);
- }
- else if (lParam == MOVIE_VIDEO_BUS_ERROR)
- {
- MsgStatus = MessageBox(wnd,"System bus error. Stop playing now ?",CaptionName,MB_YESNO|MB_ICONQUESTION);
- }
- else if (lParam == MOVIE_AUDIO_CRC_ERROR)
- {
- MsgStatus = MessageBox(wnd,"Audio CRC error. Stop playing now ?",CaptionName,MB_YESNO|MB_ICONQUESTION);
- }
- else
- {
- MsgStatus = MessageBox(wnd,"Internal error. Stop playing now ?",CaptionName,MB_YESNO|MB_ICONQUESTION);
- }
- if (MsgStatus == IDYES)
- {
- SendMessage(wnd,WM_COMMAND,IDM_STOP,0L);
- NewSetWindowText(wnd,CaptionName);
- ResetAllButton(wnd);
- }
- }
- break;
- case IDM_VOL:
- {
- POINT pt;
-
- GetCursorPos(&pt);
- ScreenToClient(wnd,&pt);
- DrawVolButton(wnd);
- if (pt.y < 16)
- {
- if (LeftChannel < MaxVolume) LeftChannel ++;
- if (RightChannel < MaxVolume) RightChannel ++;
- }
- else
- {
- if (LeftChannel > MinVolume) LeftChannel --;
- if (RightChannel > MinVolume) RightChannel --;
- }
- SetScrollPos(LeftChannelWnd,SB_CTL,LeftChannel,TRUE);
- SetDlgItemInt(wnd,TXT_LEFTCHANNEL,LeftChannel,FALSE);
- SetScrollPos(RightChannelWnd,SB_CTL,RightChannel,TRUE);
- SetDlgItemInt(wnd,TXT_RIGHTCHANNEL,RightChannel,FALSE);
- MOVIE_SetChannels(MaxVolume-LeftChannel,MaxVolume-RightChannel);
- }
- break;
- case IDM_VOLUP:
- case IDM_VOLDOWN:
- if (wParam == IDM_VOLUP)
- {
- if (LeftChannel < MaxVolume) LeftChannel ++;
- if (RightChannel < MaxVolume) RightChannel ++;
- }
- else
- {
- if (LeftChannel > MinVolume) LeftChannel --;
- if (RightChannel > MinVolume) RightChannel --;
- }
- SetScrollPos(LeftChannelWnd,SB_CTL,LeftChannel,TRUE);
- SetDlgItemInt(wnd,TXT_LEFTCHANNEL,LeftChannel,FALSE);
- SetScrollPos(RightChannelWnd,SB_CTL,RightChannel,TRUE);
- SetDlgItemInt(wnd,TXT_RIGHTCHANNEL,RightChannel,FALSE);
- MOVIE_SetChannels(MaxVolume-LeftChannel,MaxVolume-RightChannel);
- break;
- case IDM_SONG:
- if (!CheckCD(wnd)) break;
- if (SongStatus == 1)
- {
- POINT pt;
- char temp[80];
-
- if (!HasCDROM) break;
- if (PlayMode) SendMessage(wnd,WM_COMMAND,IDM_STOP,0L);
- GetCursorPos(&pt);
- ScreenToClient(wnd,&pt);
- DrawSongButton(wnd);
- if (pt.y < 16)
- {
- if (Track < EndTrack) Track++;
- }
- else
- {
- if (Track > (BYTE)(StartTrack+1U)) Track--;
- }
- SetCursor(hCursorWait);
- if (!MOVIE_CDROM_SeekTrack(Track))
- {
- SetCursor(hCursorArrow);
- NewSetWindowText(wnd,CaptionName);
- ResetAllButton(wnd);
- wsprintf(temp,"Error seeking song %d",Track-1);
- MessageBox(wnd,temp,CaptionName,MB_OK|MB_ICONSTOP);
- break;
- }
- wsprintf(temp,"Karaoke CD: Song %d",Track-1);
- NewSetWindowText(wnd,temp);
- SongStatus = 1;
- FileType = MOVIE_SYSTEM_LAYER;
- FileOpened = 2;
- ButtonStatus[IDM_STOP-IDM_START] = 0;
- ButtonStatus[IDM_PLAY-IDM_START] = 0;
- #ifdef FIXBUGS
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = 0;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = 0;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = 0;
- #endif
- ButtonStatus[IDM_PAUSE-IDM_START] = -1;
- ButtonStatus[IDM_MUTE-IDM_START] = 0;
- DrawItems(wnd);
- MOVIE_Mute(ButtonStatus[IDM_MUTE-IDM_START]);
- }
- break;
- case IDM_NEXTSONG:
- case IDM_PRESONG:
- if (!CheckCD(wnd)) break;
- if (SongStatus == 1)
- {
- char temp[80];
-
- if (!HasCDROM) break;
- InternalMode = 1;
- if (PlayMode) SendMessage(wnd,WM_COMMAND,IDM_STOP,0L);
- InternalMode = 0;
- if (wParam == IDM_NEXTSONG)
- {
- if (Track < EndTrack) Track++;
- }
- else
- {
- if (Track > (BYTE)(StartTrack+1U)) Track--;
- }
- SetCursor(hCursorWait);
- if (!MOVIE_CDROM_SeekTrack(Track))
- {
- SetCursor(hCursorArrow);
- NewSetWindowText(wnd,CaptionName);
- ResetAllButton(wnd);
- wsprintf(temp,"Error seeking song %d",Track-1);
- MessageBox(wnd,temp,CaptionName,MB_OK|MB_ICONSTOP);
- break;
- }
- SetCursor(hCursorArrow);
- wsprintf(temp,"Karaoke CD: Song %d",Track-1);
- NewSetWindowText(wnd,temp);
- SongStatus = 1;
- FileType = MOVIE_SYSTEM_LAYER;
- FileOpened = 2;
- ButtonStatus[IDM_STOP-IDM_START] = 0;
- ButtonStatus[IDM_PLAY-IDM_START] = 0;
- #ifdef FIXBUGS
- ButtonStatus[IDM_SLOWPLAY-IDM_START] = 0;
- ButtonStatus[IDM_FASTPLAY-IDM_START] = 0;
- ButtonStatus[IDM_NEXT_FRAME-IDM_START] = 0;
- #endif
- ButtonStatus[IDM_PAUSE-IDM_START] = -1;
- ButtonStatus[IDM_MUTE-IDM_START] = 0;
- DrawItems(wnd);
- MOVIE_Mute(ButtonStatus[IDM_MUTE-IDM_START]);
- InternalMode = 1;
- SendMessage(wnd,WM_COMMAND,IDM_PLAY,0L);
- InternalMode = 0;
- }
- break;
- case IDM_RESETVIDEO:
- MOVIE_ResetVideo();
- break;
- case IDM_BORDER:
- DefineBorder(wnd);
- break;
- case IDM_VGA:
- SetVGAOutput(1);
- break;
- case IDM_TOGGLEVIDEO:
- SetVGAOutput(VGAStatus^1);
- break;
- case IDM_UP:
- if (DisplayY>1)
- {
- DisplayY --;
- SetScrollPos(WndDisplayY,SB_CTL,DisplayY,TRUE);
- SetDlgItemInt(wnd,TXT_DISPLAY_Y,DisplayY,FALSE);
- MOVIE_SetDisplayPosition(DisplayX,DisplayY);
- }
- break;
- case IDM_DOWN:
- if (DisplayY<255)
- {
- DisplayY ++;
- SetScrollPos(WndDisplayY,SB_CTL,DisplayY,TRUE);
- SetDlgItemInt(wnd,TXT_DISPLAY_Y,DisplayY,FALSE);
- MOVIE_SetDisplayPosition(DisplayX,DisplayY);
- }
- break;
- case IDM_RIGHT:
- if (DisplayX<255)
- {
- DisplayX ++;
- SetScrollPos(WndDisplayX,SB_CTL,DisplayX,TRUE);
- SetDlgItemInt(wnd,TXT_DISPLAY_X,DisplayX,FALSE);
- MOVIE_SetDisplayPosition(DisplayX,DisplayY);
- }
- break;
- case IDM_LEFT:
- if (DisplayX>10)
- {
- DisplayX --;
- SetScrollPos(WndDisplayX,SB_CTL,DisplayX,TRUE);
- SetDlgItemInt(wnd,TXT_DISPLAY_X,DisplayX,FALSE);
- MOVIE_SetDisplayPosition(DisplayX,DisplayY);
- }
- break;
- case IDM_DEBUG:
- SetWindowText(wnd,CurTitle);
- MOVIE_DebugToggle();
- break;
- case IDM_HELP:
- PostMessage(MainWnd,WM_COMMAND,IDM_PAUSE,0L);
- HelpInfo(wnd);
- break;
- default:
- break;
- }
- }
-
- void RePaint(HWND wnd)
- {
- HDC dc;
- PAINTSTRUCT ps;
- RECT rt;
- HPEN pen;
- HANDLE OldPen;
-
- GetClientRect(wnd,&rt);
- dc = BeginPaint(wnd,&ps);
- pen = CreatePen(PS_SOLID,2,RGB(128,128,128));
- OldPen = SelectObject(dc,pen);
- MoveTo(dc,rt.left, rt.top+BUTTON_HEIGHT);
- LineTo(dc,rt.right,rt.top+BUTTON_HEIGHT);
- SelectObject(dc,OldPen);
- DeleteObject(pen);
- EndPaint(wnd,&ps);
- }
-
- /*
- Main Window Procedure
- */
- long FAR PASCAL MainWndProc(HWND hWnd,unsigned message,WORD wParam,LONG lParam)
- {
- int OldStatus;
- WORD id;
- WORD * NewValue;
- WORD MinValue;
- WORD MaxValue;
-
- switch (message)
- {
- case WM_COMMAND:
- ProcessCommand(hWnd,wParam,lParam);
- break;
- case WM_DRAWITEM:
- id = ((LPDRAWITEMSTRUCT)lParam)->CtlID;
- if ( (((LPDRAWITEMSTRUCT)lParam)->itemAction == ODA_FOCUS) &&
- (((LPDRAWITEMSTRUCT)lParam)->itemState == ODS_FOCUS) )
- {
- POINT pt;
-
- pt.x = pt.y = 15;
- ClientToScreen(((LPDRAWITEMSTRUCT)lParam)->hwndItem,&pt);
- /* ??? Check Current Cursor Position */
- // GetCursorPos(&pt2);
- SetCursorPos(pt.x,pt.y);
- }
- switch (id)
- {
- case IDM_SONG:
- if ( (SongStatus != -1) &&
- (((LPDRAWITEMSTRUCT)lParam)->itemState&ODS_SELECTED) )
- {
- POINT pt;
-
- GetCursorPos(&pt);
- ScreenToClient(hWnd,&pt);
- if (pt.y < 16)
- DrawSongButton2(hWnd,0);
- else
- DrawSongButton2(hWnd,1);
- }
- else DrawSongButton(hWnd);
- return NULL;
- case IDM_VOL:
- if (((LPDRAWITEMSTRUCT)lParam)->itemState&ODS_SELECTED)
- {
- POINT pt;
-
- GetCursorPos(&pt);
- ScreenToClient(hWnd,&pt);
- if (pt.y < 16)
- DrawVolButton2(hWnd,0);
- else
- DrawVolButton2(hWnd,1);
- }
- else DrawVolButton(hWnd);
- return NULL;
- case IDM_STOP:
- if (!FileOpened) break;
- case IDM_FILE:
- if (((LPDRAWITEMSTRUCT)lParam)->itemState&ODS_SELECTED)
- {
- ButtonStatus[id-IDM_START] = 1;
- DrawItem(hWnd,id-IDM_START);
- ButtonStatus[id-IDM_START] = 0;
- return NULL;
- }
- break;
- case IDM_PLAY:
- #ifdef FIXBUGS
- case IDM_SLOWPLAY:
- case IDM_FASTPLAY:
- case IDM_NEXT_FRAME:
- #endif
- if (!FileOpened) break;
- if (FileType == MOVIE_AUDIO_FILE) break;
- if (((LPDRAWITEMSTRUCT)lParam)->itemState&ODS_SELECTED)
- {
- OldStatus = ButtonStatus[id-IDM_START];
- ButtonStatus[id-IDM_START] = 1;
- DrawItem(hWnd,id-IDM_START);
- ButtonStatus[id-IDM_START] = OldStatus;
- }
- break;
- case IDM_CD:
- if (!HasCDROM) break;
- if (((LPDRAWITEMSTRUCT)lParam)->itemState&ODS_SELECTED)
- {
- ButtonStatus[id-IDM_START] = 1;
- DrawItem(hWnd,id-IDM_START);
- ButtonStatus[id-IDM_START] = 0;
- return NULL;
- }
- break;
- case IDM_PAUSE:
- if (PlayMode == 0) break;
- if (ButtonStatus[IDM_PAUSE-IDM_START]) break;
- case IDM_MUTE:
- if (!FileOpened) break;
- default:
- if (((LPDRAWITEMSTRUCT)lParam)->itemState&ODS_SELECTED)
- {
- OldStatus = ButtonStatus[id-IDM_START];
- ButtonStatus[id-IDM_START] = 1;
- DrawItem(hWnd,id-IDM_START);
- ButtonStatus[id-IDM_START] = OldStatus;
- return NULL;
- }
- break;
- }
- DrawItem(hWnd,id-IDM_START);
- break;
- case WM_CTLCOLOR:
- return MyCtlColor(wParam,lParam);
- case WM_HSCROLL:
- if ((HWND)HIWORD(lParam)==LeftChannelWnd)
- {
- NewValue = &LeftChannel;
- MaxValue = MaxVolume;
- MinValue = MinVolume;
- }
- else if ((HWND)HIWORD(lParam)==RightChannelWnd)
- {
- NewValue = &RightChannel;
- MaxValue = MaxVolume;
- MinValue = MinVolume;
- }
- else if ((HWND)HIWORD(lParam)==WndDisplayX)
- {
- NewValue = &DisplayX;
- MaxValue = 255;
- MinValue = 10;
- }
- else if ((HWND)HIWORD(lParam)==WndDisplayY)
- {
- NewValue = &DisplayY;
- MaxValue = 255;
- MinValue = 1;
- }
- else
- break;
- switch (wParam)
- {
- case SB_RIGHT:
- *NewValue = MaxVolume;
- break;
- case SB_LEFT:
- *NewValue = MinVolume;
- break;
- case SB_PAGEUP:
- case SB_LINEUP:
- if (*NewValue > MinValue) *NewValue -= 1;
- break;
- case SB_LINEDOWN:
- case SB_PAGEDOWN:
- if (*NewValue < MaxValue) *NewValue += 1;
- break;
- case SB_THUMBPOSITION:
- case SB_THUMBTRACK:
- *NewValue = LOWORD(lParam);
- break;
- default:
- break;
- }
- SetScrollPos(HIWORD(lParam),SB_CTL,*NewValue,TRUE);
- if ((HWND)HIWORD(lParam)==LeftChannelWnd)
- {
- SetDlgItemInt(hWnd,TXT_LEFTCHANNEL,*NewValue,FALSE);
- MOVIE_SetChannels(MaxVolume-LeftChannel,MaxVolume-RightChannel);
- }
- else if ((HWND)HIWORD(lParam)==RightChannelWnd)
- {
- SetDlgItemInt(hWnd,TXT_RIGHTCHANNEL,*NewValue,FALSE);
- MOVIE_SetChannels(MaxVolume-LeftChannel,MaxVolume-RightChannel);
- }
- else if ((HWND)HIWORD(lParam)==WndDisplayX)
- {
- SetDlgItemInt(hWnd,TXT_DISPLAY_X,*NewValue,FALSE);
- MOVIE_SetDisplayPosition(DisplayX,DisplayY);
- }
- else if ((HWND)HIWORD(lParam)==WndDisplayY)
- {
- SetDlgItemInt(hWnd,TXT_DISPLAY_Y,*NewValue,FALSE);
- MOVIE_SetDisplayPosition(DisplayX,DisplayY);
- }
- break;
- case WM_PAINT:
- RePaint(hWnd);
- break;
- case WM_RBUTTONDBLCLK:
- case WM_NCRBUTTONDBLCLK:
- SetVGAOutput(VGAStatus^1);
- break;
- case WM_ACTIVATEAPP:
- if (!wParam)
- {
- SetVGAOutput(1);
- }
- break;
- case WM_KILLFOCUS:
- SetVGAOutput(1);
- break;
- #ifdef USE_CTL3D
- case WM_SYSCOLORCHANGE:
- Ctl3dColorChange();
- break;
- #endif
- case WM_DESTROY:
- ReleaseResources();
- DeleteObject(MainBrush);
- MOVIE_Exit(SaveOnExit);
- PostQuitMessage(0);
- break;
- case WM_CREATE:
- if (!AllocateResources(hWnd,MainInst))
- {
- MessageBox(hWnd,"Cannot allocate resources",CaptionName,MB_OK|MB_ICONSTOP);
- DestroyWindow(hWnd);
- }
- hCursorArrow = LoadCursor(NULL, IDC_ARROW);
- hCursorWait = LoadCursor(NULL, IDC_WAIT);
- CheckMediaChanged = GetPrivateProfileInt(Section,"CheckMediaChanged",0,MOVIEINI);
- Frequency = GetPrivateProfileInt(Section,"Frequency",60,MOVIEINI);
- if (Frequency == 50)
- VideoFrequency = MOVIE_50HZ;
- else
- VideoFrequency = MOVIE_60HZ;
- LeftChannel = MaxVolume-GetPrivateProfileInt(Section,"LeftChannel",10,MOVIEINI);
- if (LeftChannel>63) LeftChannel = 53;
- RightChannel = MaxVolume-GetPrivateProfileInt(Section,"RightChannel",10,MOVIEINI);
- if (RightChannel>63) RightChannel = 53;
- DefaultX = GetPrivateProfileInt("Default","VideoX",15,MOVIEINI);
- DefaultY = GetPrivateProfileInt("Default","VideoY",5,MOVIEINI);
- if ( (DisplayX < 10) || (DisplayX > 255) ) DefaultX = 15;
- if ( (DisplayY < 1) || (DisplayY > 255) ) DefaultY = 5;
- DisplayX = GetPrivateProfileInt(Section,"VideoX",DefaultX,MOVIEINI);
- DisplayY = GetPrivateProfileInt(Section,"VideoY",DefaultY,MOVIEINI);
- if ( (DisplayX < 10) || (DisplayX > 255) ) DisplayX = DefaultX;
- if ( (DisplayY < 1) || (DisplayY > 255) ) DisplayY = DefaultY;
- ColorR = GetPrivateProfileInt(Section,"BorderR",0, MOVIEINI);
- ColorG = GetPrivateProfileInt(Section,"BorderG",0, MOVIEINI);
- ColorB = GetPrivateProfileInt(Section,"BorderB",31,MOVIEINI);
- if (ColorR > 31) ColorR = 31;
- if (ColorG > 31) ColorG = 31;
- if (ColorB > 31) ColorB = 31;
- PTSFlag = GetPrivateProfileInt(Section,"PTSNotify",0,MOVIEINI);
- SetErrorMode(SEM_FAILCRITICALERRORS);
- CheckRadioButton(hWnd,IDM_50HZ,IDM_60HZ,(VideoFrequency)?IDM_60HZ:IDM_50HZ);
- SetScrollRange(LeftChannelWnd,SB_CTL,MinVolume,MaxVolume,FALSE);
- SetScrollPos(LeftChannelWnd,SB_CTL,LeftChannel,TRUE);
- SetDlgItemInt(hWnd,TXT_LEFTCHANNEL,LeftChannel,FALSE);
- SetScrollRange(RightChannelWnd,SB_CTL,MinVolume,MaxVolume,FALSE);
- SetScrollPos(RightChannelWnd,SB_CTL,RightChannel,TRUE);
- SetDlgItemInt(hWnd,TXT_RIGHTCHANNEL,RightChannel,FALSE);
- SetScrollRange(WndDisplayX,SB_CTL,10,255,FALSE);
- SetScrollPos(WndDisplayX,SB_CTL,DisplayX,TRUE);
- SetDlgItemInt(hWnd,TXT_DISPLAY_X,DisplayX,FALSE);
- SetScrollRange(WndDisplayY,SB_CTL,1,255,FALSE);
- SetScrollPos(WndDisplayY,SB_CTL,DisplayY,TRUE);
- SetDlgItemInt(hWnd,TXT_DISPLAY_Y,DisplayY,FALSE);
- SetVGAOutput(VGAStatus);
- MOVIE_SetChannels(MaxVolume-LeftChannel,MaxVolume-RightChannel);
- MOVIE_SetDisplayPosition(DisplayX,DisplayY);
- MOVIE_SetVideoFrequency(VideoFrequency);
- MOVIE_SetBorder(ColorR,ColorG,ColorB);
- MOVIE_MovieNotify(hWnd,IDM_NOTIFY);
- if (PTSFlag) MOVIE_PTSNotify(hWnd,IDM_PTSNOTIFY);
- break;
- default:
- return DefWindowProc(hWnd,message,wParam,lParam);
- }
- return NULL;
- }
-
- BOOL RegisterAllClass(HANDLE hInstance)
- {
- WNDCLASS wc;
-
- MainAccel = LoadAccelerators(MainInst,"MPGMovieAccel");
- MainBrush = CreateSolidBrush(COLOR);
- wc.style = CS_DBLCLKS;
- #ifndef _INC_WINDOWS /* MSC 6.0 */
- wc.lpfnWndProc = MainWndProc;
- #else /* MSC 7.0 */
- wc.lpfnWndProc = (WNDPROC)MainWndProc;
- #endif
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hIcon = LoadIcon(hInstance,IconName);
- wc.hCursor = LoadCursor(NULL,IDC_ARROW);
- wc.hbrBackground = MainBrush;
- wc.lpszMenuName = NULL;
- wc.lpszClassName = ClassName;
- if(!RegisterClass(&wc)) return FALSE;
- return TRUE;
- }
-
- BOOL CreateWindows(HANDLE hInstance,int nCmdShow)
- {
- WinWidth = ((MAX_BUTTON+2) * BUTTON_WIDTH) + (2 * GetSystemMetrics(SM_CXBORDER));
- WinHeight = BUTTON_HEIGHT + GetSystemMetrics(SM_CYCAPTION) +
- (2 * GetSystemMetrics(SM_CYBORDER));
- MainWnd = CreateWindow(ClassName,CaptionName,
- DS_SYSMODAL|WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_BORDER,
- CW_USEDEFAULT,CW_USEDEFAULT,
- WinWidth,WinHeight,
- NULL,NULL,hInstance,NULL);
- if (!MainWnd) return FALSE;
- ShowWindow(MainWnd,nCmdShow);
- UpdateWindow(MainWnd);
- return TRUE;
- }
-
- void ProcessCmdLine(HWND hWnd,LPSTR lpCmdLine)
- {
- if ( (lpCmdLine != NULL) && (lstrlen(lpCmdLine)!=0) )
- {
- lstrcpy(szOpenFileName,lpCmdLine);
- CmdFile = 1;
- if (lstrcmp(szOpenFileName,"VIDEOCD")==0)
- SendMessage(hWnd,WM_COMMAND,IDM_CD,0L);
- else
- SendMessage(hWnd,WM_COMMAND,IDM_FILE,0L);
- SendMessage(hWnd,WM_COMMAND,IDM_PLAY,0L);
- }
- }
-
- /*
- Program Entry Point
- */
- int PASCAL WinMain(HANDLE hInstance,HANDLE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
- {
- MSG msg;
- HWND wnd;
- BOOL Quit;
-
- MainInst = hInstance;
- if (hPrevInstance)
- {
- if ( (wnd=FindWindow(ClassName,CaptionName)) != NULL)
- {
- BringWindowToTop(wnd);
- if (IsIconic(wnd)) ShowWindow(wnd,SW_RESTORE);
- }
- return FALSE;
- }
-
- #ifdef USE_CTL3D
- Ctl3dRegister(hInstance);
- Ctl3dAutoSubclass(hInstance);
- #endif
-
- if ( (GetWinFlags() & WF_ENHANCED) == 0)
- {
- MessageBox(NULL,"Please run Windows in 386 enhanced mode",CaptionName,MB_OK|MB_ICONSTOP);
- #ifdef USE_CTL3D
- Ctl3dUnregister(hInstance);
- #endif
- return FALSE;
- }
- switch (MOVIE_Initialize())
- {
- case 0:
- MessageBox(NULL,"Cannot detect MPEG Player hardware",CaptionName,MB_OK|MB_ICONSTOP);
- #ifdef USE_CTL3D
- Ctl3dUnregister(hInstance);
- #endif
- return FALSE;
- case -1:
- {
- int DMAsize = 16;
-
- DMAsize = GetPrivateProfileInt("386Enh","DMABUFFERSIZE",16,"SYSTEM.INI");
- if (DMAsize < 60)
- {
- WritePrivateProfileInt("386Enh","DMABUFFERSIZE",60,"SYSTEM.INI");
- }
- MessageBox(NULL,"Please restart Windows and run the MPEG Player utility again",CaptionName,MB_OK|MB_ICONSTOP);
- }
- #ifdef USE_CTL3D
- Ctl3dUnregister(hInstance);
- #endif
- return FALSE;
- case -2:
- MessageBox(NULL,"Cannot allocate memory below 1MB. Plesae restart Windows or see the README.TXT.",CaptionName,MB_OK|MB_ICONSTOP);
- #ifdef USE_CTL3D
- Ctl3dUnregister(hInstance);
- #endif
- return FALSE;
- case -3:
- MessageBox(NULL,"Please run Windows in 386 enhanced mode",CaptionName,MB_OK|MB_ICONSTOP);
- #ifdef USE_CTL3D
- Ctl3dUnregister(hInstance);
- #endif
- return FALSE;
- case 1:
- break;
- default:
- MessageBox(NULL,"Initialization error",CaptionName,MB_OK|MB_ICONSTOP);
- #ifdef USE_CTL3D
- Ctl3dUnregister(hInstance);
- #endif
- return FALSE;
- }
- if (!RegisterAllClass(hInstance))
- {
- #ifdef USE_CTL3D
- Ctl3dUnregister(hInstance);
- #endif
- return FALSE;
- }
- if (!CreateWindows(hInstance,nCmdShow))
- {
- #ifdef USE_CTL3D
- Ctl3dUnregister(hInstance);
- #endif
- return FALSE;
- }
- ProcessCmdLine(MainWnd,lpCmdLine);
- /*
- while (GetMessage(&msg,NULL,NULL,NULL))
- {
- if (!TranslateAccelerator(MainWnd,MainAccel,&msg))
- {
- if (!IsDialogMessage(MainWnd,&msg))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- }
- */
- for (Quit=FALSE;;)
- {
- while (PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE))
- {
- if (msg.message == WM_QUIT)
- {
- Quit = TRUE;
- break;
- }
- if (!TranslateAccelerator(MainWnd,MainAccel,&msg))
- {
- if (!IsDialogMessage(MainWnd,&msg))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- }
- if (Quit) break;
- MOVIE_SendData();
- }
- #ifdef USE_CTL3D
- Ctl3dUnregister(hInstance);
- #endif
- return (msg.wParam);
- }