LRESULT CALLBACK WndMainProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_GRAPHNOTIFY: HandleGraphEvent(); break; case WM_SIZE: ResizeVideoWindow(); break; case WM_WINDOWPOSCHANGED: ChangePreviewState(! (IsIconic(hwnd))); break; case WM_CLOSE: // Hide the main window while the graph is destroyed ShowWindow(ghApp, SW_HIDE); CloseInterfaces(); // Stop capturing and release interfaces break; case WM_DESTROY: PostQuitMessage(0); return 0; } // Pass this message to the video window for notification of system changes if (g_pVW) g_pVW->NotifyOwnerMessage((LONG_PTR) hwnd, message, wParam, lParam); return DefWindowProc (hwnd , message, wParam, lParam); }
//-------------------------------------------------------------------------------------- // Handle messages to the application //-------------------------------------------------------------------------------------- LRESULT CALLBACK MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool* pbNoFurtherProcessing, void* pUserContext ) { /* *pbNoFurtherProcessing = g_UI.MsgProc( hWnd, uMsg, wParam, lParam ); if( *pbNoFurtherProcessing ) return 0; *pbNoFurtherProcessing = g_NextLevelButton.MsgProc( hWnd, uMsg, wParam, lParam ); if( *pbNoFurtherProcessing ) return 0; */ switch(uMsg) { case WM_GRAPHNOTIFY: // event by mp3player HandleGraphEvent(); break; case WM_MOUSEMOVE: g_pGame->MouseEvent(LOWORD(lParam), HIWORD(lParam), false, false, 0, true); break; } return 0; }
LRESULT CMediaPlayerDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // Field notifications from the DirectShow filter graph manager // and those posted by the application switch (message) { case WM_GRAPHNOTIFY: HandleGraphEvent(); break; case WM_HSCROLL: HandleTrackbar(LOWORD(wParam)); break; case WM_VSCROLL: HandleVolumeSlider(LOWORD(wParam)); break; case WM_PLAYFILE: PlaySelectedFile(); break; case WM_KEYDOWN: switch(LOWORD(wParam)) { case 'P': OnPlay(); break; case 'S': OnStop(); break; case 'U': OnPause(); break; case 'L': OnCheckLoop(); break; case 'M': OnCheckMute(); break; case VK_ESCAPE: if (g_bFullScreen_MP) OnCheckFullScreen(); else OnClose(); break; } break; case WM_CLOSE: FreeDirectShow(); break; } // Pass along this message to the video window, which exists as a child // of the m_MPScreen window. This method should be used by windows that // make a renderer window a child window. It forwards significant messages // to the child window that the child window would not otherwise receive. if (pVW_MP) { pVW_MP->NotifyOwnerMessage((LONG_PTR) m_hWnd, message, wParam, lParam); } return COXSizeDialogBar::WindowProc(message, wParam, lParam); }
LRESULT CALLBACK WndMainProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_PAINT: OnPaint(hWnd); break; case WM_DISPLAYCHANGE: if (pWC) pWC->DisplayModeChanged(); break; // Resize the video when the window changes case WM_MOVE: case WM_SIZE: if (hWnd == ghApp) MoveVideoWindow(); break; // Enforce a minimum size case WM_GETMINMAXINFO: { LPMINMAXINFO lpmm = (LPMINMAXINFO) lParam; if (lpmm) { lpmm->ptMinTrackSize.x = MINIMUM_VIDEO_WIDTH; lpmm->ptMinTrackSize.y = MINIMUM_VIDEO_HEIGHT; } } break; case WM_KEYDOWN: switch(toupper((int) wParam)) { case VK_ESCAPE: case VK_F12: CloseClip(); break; } break; case WM_COMMAND: switch(wParam) { // Menus case ID_FILE_OPENCLIP: // If we have ANY file open, close it and shut down DirectShow CloseClip(); OpenClip(); // Open the new clip break; case ID_FILE_INITCLIP: OpenClip(); break; case ID_FILE_EXIT: CloseClip(); PostQuitMessage(0); break; case ID_FILE_CLOSE: CloseClip(); break; case ID_DISABLE: FlipFlag(MARK_DISABLE); DisableTicker(g_dwTickerFlags); break; case ID_SLIDE: FlipFlag(MARK_SLIDE); SlideTicker(g_dwTickerFlags); break; case ID_TICKER_STATIC_IMAGE: g_dwTickerFlags |= MARK_STATIC_IMAGE; g_dwTickerFlags &= ~(MARK_DYNAMIC_TEXT); BlendApplicationImage(ghApp); CheckMenuItem(ghMenu, ID_TICKER_STATIC_IMAGE, MF_CHECKED); CheckMenuItem(ghMenu, ID_TICKER_DYNAMIC_TEXT, MF_UNCHECKED); break; case ID_TICKER_DYNAMIC_TEXT: g_dwTickerFlags |= MARK_DYNAMIC_TEXT; g_dwTickerFlags &= ~(MARK_STATIC_IMAGE); BlendApplicationText(ghApp, g_szAppText); CheckMenuItem(ghMenu, ID_TICKER_STATIC_IMAGE, MF_UNCHECKED); CheckMenuItem(ghMenu, ID_TICKER_DYNAMIC_TEXT, MF_CHECKED); break; case ID_SET_FONT: g_hFont = UserSelectFont(); // Change the current font PostMessage(ghApp, WM_COMMAND, ID_TICKER_DYNAMIC_TEXT, 0); break; case ID_SET_TEXT: DialogBox(ghInst, MAKEINTRESOURCE(IDD_DIALOG_TEXT), ghApp, (DLGPROC) TextDlgProc); break; case ID_HELP_ABOUT: DialogBox(ghInst, MAKEINTRESOURCE(IDD_HELP_ABOUT), ghApp, (DLGPROC) AboutDlgProc); break; } // Menus break; case WM_GRAPHNOTIFY: HandleGraphEvent(); break; case WM_CLOSE: SendMessage(ghApp, WM_COMMAND, ID_FILE_EXIT, 0); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } // Window msgs handling return DefWindowProc(hWnd, message, wParam, lParam); }
LRESULT CALLBACK WndMainProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { // Resize the video when the window changes case WM_MOVE: case WM_SIZE: if ((hWnd == ghApp) && (!g_bAudioOnly)) MoveVideoWindow(); break; // Enforce a minimum size case WM_GETMINMAXINFO: { LPMINMAXINFO lpmm = (LPMINMAXINFO) lParam; lpmm->ptMinTrackSize.x = MINIMUM_VIDEO_WIDTH; lpmm->ptMinTrackSize.y = MINIMUM_VIDEO_HEIGHT; } break; case WM_KEYDOWN: switch(toupper((int) wParam)) { // Frame stepping case VK_SPACE: case '1': StepOneFrame(); break; // Frame stepping (multiple frames) case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': StepFrames((int) wParam - '0'); break; case 'P': PauseClip(); break; case 'S': StopClip(); break; case 'M': ToggleMute(); break; case 'F': case VK_RETURN: ToggleFullScreen(); break; case 'H': InitVideoWindow(1,2); CheckSizeMenu(wParam); break; case 'N': InitVideoWindow(1,1); CheckSizeMenu(wParam); break; case 'D': InitVideoWindow(2,1); CheckSizeMenu(wParam); break; case 'T': InitVideoWindow(3,4); CheckSizeMenu(wParam); break; case VK_ESCAPE: if (g_bFullscreen) ToggleFullScreen(); else CloseClip(); break; case VK_F12: case 'Q': case 'X': CloseClip(); break; } break; case WM_COMMAND: switch(wParam) { // Menus case ID_FILE_OPENCLIP: // If we have ANY file open, close it and shut down DirectShow if (g_psCurrent != Init) CloseClip(); // Open the new clip OpenClip(); break; case ID_FILE_EXIT: CloseClip(); PostQuitMessage(0); break; case ID_FILE_PAUSE: PauseClip(); break; case ID_FILE_STOP: StopClip(); break; case ID_FILE_CLOSE: CloseClip(); break; case ID_FILE_MUTE: ToggleMute(); break; case ID_FILE_FULLSCREEN: ToggleFullScreen(); break; case ID_HELP_ABOUT: DialogBox(ghInst, MAKEINTRESOURCE(IDD_ABOUTBOX), ghApp, (DLGPROC) AboutDlgProc); break; case ID_FILE_SIZE_HALF: InitVideoWindow(1,2); CheckSizeMenu(wParam); break; case ID_FILE_SIZE_NORMAL: InitVideoWindow(1,1); CheckSizeMenu(wParam); break; case ID_FILE_SIZE_DOUBLE: InitVideoWindow(2,1); CheckSizeMenu(wParam); break; case ID_FILE_SIZE_THREEQUARTER: InitVideoWindow(3,4); CheckSizeMenu(wParam); break; case ID_SINGLE_STEP: StepOneFrame(); break; } // Menus break; case WM_GRAPHNOTIFY: HandleGraphEvent(); break; case WM_CLOSE: SendMessage(ghApp, WM_COMMAND, ID_FILE_EXIT, 0); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } // Window msgs handling // Pass this message to the video window for notification of system changes if (pVW) pVW->NotifyOwnerMessage((LONG_PTR) hWnd, message, wParam, lParam); return DefWindowProc(hWnd, message, wParam, lParam); }
LRESULT CALLBACK WndMainProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_PAINT: OnPaint(hWnd); break; case WM_DISPLAYCHANGE: if (pWC) pWC->DisplayModeChanged(); break; // Resize the video when the window changes case WM_MOVE: case WM_SIZE: if (hWnd == ghApp) MoveVideoWindow(); break; // Enforce a minimum size case WM_GETMINMAXINFO: { LPMINMAXINFO lpmm = (LPMINMAXINFO) lParam; if (lpmm) { lpmm->ptMinTrackSize.x = MINIMUM_VIDEO_WIDTH; lpmm->ptMinTrackSize.y = MINIMUM_VIDEO_HEIGHT; } } break; case WM_KEYDOWN: switch(toupper((int) wParam)) { case 'P': PauseClip(); break; case 'S': StopClip(); break; case 'M': ToggleMute(); break; case VK_ESCAPE: case VK_F12: case 'Q': case 'X': CloseClip(); break; } break; case WM_COMMAND: switch(wParam) { // Menus case ID_FILE_OPENCLIP: // If we have ANY file open, close it and shut down DirectShow if (g_psCurrent != Init) CloseClip(); // Open the new clip OpenClip(); break; case ID_FILE_EXIT: CloseClip(); PostQuitMessage(0); break; case ID_FILE_PAUSE: PauseClip(); break; case ID_FILE_STOP: StopClip(); break; case ID_FILE_CLOSE: CloseClip(); break; case ID_FILE_MUTE: ToggleMute(); break; case ID_FLIP: FlipFlag(MARK_FLIP); FlipWatermark(g_dwWatermarkFlags); break; case ID_MIRROR: FlipFlag(MARK_MIRROR); MirrorWatermark(g_dwWatermarkFlags); break; case ID_DISABLE: FlipFlag(MARK_DISABLE); DisableWatermark(g_dwWatermarkFlags); break; case ID_ANIMATE: FlipFlag(MARK_ANIMATE); AnimateWatermark(g_dwWatermarkFlags); break; case ID_SLIDE: FlipFlag(MARK_SLIDE); SlideWatermark(g_dwWatermarkFlags); break; case ID_STROBE: FlipFlag(MARK_STROBE); StrobeWatermark(g_dwWatermarkFlags); break; case ID_ALL_EFFECTS: SetAllEffects(); break; case ID_NO_EFFECTS: ClearAllEffects(); break; case ID_HELP_ABOUT: DialogBox(ghInst, MAKEINTRESOURCE(IDD_ABOUTBOX), ghApp, (DLGPROC) AboutDlgProc); break; } // Menus break; case WM_GRAPHNOTIFY: HandleGraphEvent(); break; case WM_CLOSE: SendMessage(ghApp, WM_COMMAND, ID_FILE_EXIT, 0); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } // Window msgs handling return DefWindowProc(hWnd, message, wParam, lParam); }