📄 player.cpp
字号:
case IDM_ABOUT:
#if defined(_MSC_VER) && _MSC_VER >= 1200
//VC++ 6
DialogBox(GetWindowInstance(hWnd),
MAKEINTRESOURCE(IDD_ABOUT),
hWnd,
AboutDlgProc);
#else
//VC++ 5
DialogBox(GetWindowInstance(hWnd),
MAKEINTRESOURCE(IDD_ABOUT),
hWnd,
(int (__stdcall *)(void)) AboutDlgProc);
#endif
break;
}
return 0;
case WM_PAINT:
BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
return 0;
case WM_SIZE:
if (!IsIconic(hWnd) && hWndMCI && bIsOpenMovie)
MoveWindow(hWndMCI,0,0,LOWORD(lParam),HIWORD(lParam),TRUE);
break;
case WM_DESTROY:
if (bIsOpenMovie)
MCIWndClose(hWndMCI); // close an open movie
MCIWndDestroy(hWndMCI); // now destroy the MCIWnd window
PostQuitMessage(0);
return 0;
case MCIWNDM_NOTIFYSIZE:
if (!IsIconic(hWnd)) {
if (bIsOpenMovie){
/* adjust to size of the movie window */
GetWindowRect(hWndMCI, &rc);
AdjustWindowRect(&rc, GetWindowLong(hWnd, GWL_STYLE), TRUE);
SetWindowPos(hWnd, NULL, 0, 0, rc.right - rc.left,
rc.bottom - rc.top,
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOMOVE);
} else {
/* movie closed, adjust to the default size */
int iWinHeight;
iWinHeight = GetSystemMetrics(SM_CYCAPTION) +
GetSystemMetrics(SM_CYMENU) +
(GetSystemMetrics(SM_CYFRAME) * 2);
SetWindowPos(hWnd, NULL, 0, 0, 180, iWinHeight,
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOMOVE);
}
}
break;
case WM_ACTIVATE:
case WM_QUERYNEWPALETTE:
case WM_PALETTECHANGED:
//
// Forward palette-related messages through to the MCIWnd,
// so it can do the right thing.
//
if (hWndMCI)
return SendMessage(hWndMCI, message, wParam, lParam);
break;
} /* switch */
return DefWindowProc(hWnd, message, wParam, lParam);
}
void UpdateMenubar(HWND hWnd)
{
WORD w,wp;
if (bIsOpenMovie){
w = MF_ENABLED|MF_BYPOSITION;
wp = MF_ENABLED;
} else {
w = MF_GRAYED|MF_BYPOSITION;
wp = MF_GRAYED;
}
EnableMenuItem(hMenuBar, 1, w); /* change the Movie menu (#1) */
EnableMenuItem(hMenuBar, ID_PLAY, wp);
DrawMenuBar(hWnd); /* re-draw the menu bar */
}
void UpdateTitle(HWND hWnd, LPSTR lpstrMovie)
{
char achNewTitle[BUFFER_LENGTH]; // space for the title
if (lpstrMovie != NULL)
wsprintf((LPSTR)achNewTitle,"%s - %s", (LPSTR)szAppName,lpstrMovie);
else
lstrcpy((LPSTR)achNewTitle, (LPSTR)szAppName);
SetWindowText(hWnd, (LPSTR)achNewTitle);
}
// OpenMCIMovieFile - open an AVI movie.
void OpenMCIMovieFile(HWND hWnd)
{
OPENFILENAME ofn;
static char szFile [BUFFER_LENGTH];
static char szFileTitle [BUFFER_LENGTH];
static char szFilter [BUFFER_LENGTH];
char szLabelBuffer [BUFFER_LENGTH];
::LoadString(NULL, ID_FILETYPE_VIDEO4WINDOWS, &szLabelBuffer[0], sizeof(szLabelBuffer)/sizeof(szLabelBuffer[0]));
wsprintf(szFilter, szFilterVideo4WindowsFormat, szLabelBuffer);
memset(&ofn, 0, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hWnd;
ofn.lpstrFilter = szFilter;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFileTitle = szFileTitle;
ofn.nMaxFileTitle = sizeof(szFileTitle);
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn)){
if (bIsOpenMovie)
MCIWndClose(hWndMCI);
bIsOpenMovie = TRUE; // assume the best
if (MCIWndOpen(hWndMCI, ofn.lpstrFile, 0) == 0){
ShowWindow(hWndMCI, SW_SHOW);
} else {
char szBuffer[BUFFER_LENGTH];
::LoadString(NULL, ID_ERROR_OPEN_MOVIE, szBuffer, sizeof(szBuffer));
MessageBox(hWnd, szBuffer, NULL,
MB_ICONEXCLAMATION|MB_OK);
bIsOpenMovie = FALSE;
}
}
UpdateMenubar(hWnd);
if (bIsOpenMovie)
UpdateTitle(hWnd, (LPSTR)ofn.lpstrFileTitle);
else
UpdateTitle(hWnd, NULL);
// update
InvalidateRect(hWnd, NULL, FALSE);
UpdateWindow(hWnd);
}
void OpenMCIMovieFileInit(HWND hWnd)
{
static char szFile [BUFFER_LENGTH];
static char szFileTitle [BUFFER_LENGTH];
if (bIsOpenMovie)
MCIWndClose(hWndMCI);
//MCIWndSetActiveTimer(hWndMCI, 20);
bIsOpenMovie = TRUE;
if (MCIWndOpen(hWndMCI, playfiledir, 0) == 0){
ShowWindow(hWndMCI, SW_SHOW);
} else {
char szBuffer[BUFFER_LENGTH];
::LoadString(NULL, ID_ERROR_OPEN_MOVIE, szBuffer, sizeof(szBuffer));
MessageBox(hWnd, szBuffer, NULL,
MB_ICONEXCLAMATION|MB_OK);
bIsOpenMovie = FALSE;
}
UpdateMenubar(hWnd);
if (bIsOpenMovie){
char szBuffer[BUFFER_LENGTH];
::LoadString(NULL, ID_TITLE_PLAYING_AVI, szBuffer, sizeof(szBuffer));
UpdateTitle(hWnd, szBuffer);
} else
UpdateTitle(hWnd, NULL);
InvalidateRect(hWnd, NULL, FALSE);
UpdateWindow(hWnd);
}
/* AboutDlgProc()
*
* Dialog Procedure for the "about" dialog box.
*
*/
BOOL CALLBACK AboutDlgProc(
HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
switch (msg) {
case WM_COMMAND:
EndDialog(hwnd, TRUE);
return TRUE;
case WM_INITDIALOG:
return TRUE;
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -