// could use Window event table for this stuff BOOL Window::WndProc(TMSG &Msg) { // handle internal actions switch (Msg.Msg) { case WM_QUERYENDSESSION: case WM_CLOSE: if (!CanClose()) return TRUE; //returns 0 break; case WM_DESTROY: // quit if main window if (this==App::MainWindow) App::Quit(); if (Flags & W_SAVEPOS) SaveWindowState(); Flags|=W_DESTROYED; Destroy(); // MainWindow is deleted on program exit if (this==App::MainWindow) App::Quit(); else delete this; return TRUE; case WM_PAINT: PAINTSTRUCT ps; BeginPaint(hWnd, (LPPAINTSTRUCT) &ps); SetWindowOrgEx(ps.hdc,xPos,yPos,NULL); Paint(ps.hdc,ps.fErase,ps.rcPaint); if (StatBar) // draw statbar after window { SetWindowOrgEx(ps.hdc,0,0,NULL); // dont scroll statbar StatBar->Paint(ps.hdc); } EndPaint(hWnd, (LPPAINTSTRUCT) &ps); break; case WM_HSCROLL: HScroll(Msg); break; case WM_VSCROLL: VScroll(Msg); break; case WM_SIZE: WMSize(Msg); break; case WM_GETMINMAXINFO: WMGetMinMaxInfo(Msg); break; case WM_COMMAND: { int id=LOWORD(Msg.wParam); if (id>MRU_ID && id<=MRU_ID+MRU_MAX) { OpenFile(MruList[id-MRU_ID-1]); return TRUE; } else if (id>MRU2_ID && id<=MRU2_ID+MRU_MAX) { OpenFile2(MruList2[id-MRU2_ID-1]); return TRUE; } break; } case WM_INITMENU: InitMenu((HMENU) Msg.wParam); // handle of menu to initialize break; } if (StatBar) StatBar->EV_FIND(Msg); //allow user to grab any message return EV_FIND(Msg); }
LRESULT MainWnd::WndProc(UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_SIZE: WMSize(); break; case WM_CLOSE: WMClose(); break; } return Window::WndProc(msg, wParam, lParam); }
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: return WMCreate (hwnd, wParam, lParam); case WM_SIZE: return WMSize (hwnd, wParam, lParam); case WM_LBUTTONDOWN: return WMLButtonDown (hwnd, wParam, lParam); case WM_DESTROY: return WMDestroy (hwnd, wParam, lParam); } return DefWindowProc (hwnd, message, wParam, lParam); }
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_SIZE: return WMSize (hwnd, wParam, lParam); case WM_PAINT: return WMPaint (hwnd, wParam, lParam); case WM_DESTROY: return WMDestroy (hwnd, wParam, lParam); } return DefWindowProc (hwnd, message, wParam, lParam); }
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: return WMCreate (hwnd, wParam, lParam); case WM_SETFOCUS: return WMSetFocus (hwnd, wParam, lParam); case WM_SIZE: return WMSize (hwnd, wParam, lParam); case WM_COMMAND: return WMCommand (hwnd, wParam, lParam); case WM_DESTROY: return WMDestroy (hwnd, wParam, lParam); } return DefWindowProc (hwnd, message, wParam, lParam); }