LRESULT TWin::WinProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { BOOL done = FALSE; LRESULT result = 0; switch(uMsg) { case WM_CREATE: GetWindowRect(&orgRect); done = EvCreate(lParam); break; case WM_CLOSE: done = EvClose(); break; case WM_COMMAND: done = EvCommand(HIWORD(wParam), LOWORD(wParam), lParam); break; case WM_SYSCOMMAND: done = EvSysCommand(wParam, MAKEPOINTS(lParam)); break; case WM_TIMER: done = EvTimer(wParam, (TIMERPROC)lParam); break; case WM_DESTROY: done = EvDestroy(); break; case WM_NCDESTROY: if (!::IsIconic(hWnd)) GetWindowRect(&rect); if (!EvNcDestroy()) // hWndを0にする前に呼び出す DefWindowProc(uMsg, wParam, lParam); done = TRUE; TApp::GetApp()->DelWin(this); hWnd = 0; break; case WM_QUERYENDSESSION: result = EvQueryEndSession((BOOL)wParam, (BOOL)lParam); done = TRUE; break; case WM_ENDSESSION: done = EvEndSession((BOOL)wParam, (BOOL)lParam); break; case WM_QUERYOPEN: result = EvQueryOpen(); done = TRUE; break; case WM_PAINT: done = EvPaint(); break; case WM_NCPAINT: done = EvNcPaint((HRGN)wParam); break; case WM_SIZE: done = EvSize((UINT)wParam, LOWORD(lParam), HIWORD(lParam)); break; case WM_MOVE: done = EvMove(LOWORD(lParam), HIWORD(lParam)); break; case WM_SHOWWINDOW: done = EvShowWindow((BOOL)wParam, (int)lParam); break; case WM_GETMINMAXINFO: done = EvGetMinMaxInfo((MINMAXINFO *)lParam); break; case WM_SETCURSOR: result = done = EvSetCursor((HWND)wParam, LOWORD(lParam), HIWORD(lParam)); break; case WM_MOUSEMOVE: done = EvMouseMove((UINT)wParam, MAKEPOINTS(lParam)); break; case WM_NCHITTEST: done = EvNcHitTest(MAKEPOINTS(lParam), &result); break; case WM_MEASUREITEM: result = done = EvMeasureItem((UINT)wParam, (LPMEASUREITEMSTRUCT)lParam); break; case WM_DRAWITEM: result = done = EvDrawItem((UINT)wParam, (LPDRAWITEMSTRUCT)lParam); break; case WM_NOTIFY: result = done = EvNotify((UINT)wParam, (LPNMHDR)lParam); break; case WM_CONTEXTMENU: result = done = EvContextMenu((HWND)wParam, MAKEPOINTS(lParam)); break; case WM_HOTKEY: result = done = EvHotKey((int)wParam); break; case WM_ACTIVATEAPP: done = EvActivateApp((BOOL)wParam, (DWORD)lParam); break; case WM_ACTIVATE: EvActivate(LOWORD(wParam), HIWORD(wParam), (HWND)lParam); break; case WM_DROPFILES: done = EvDropFiles((HDROP)wParam); break; case WM_CHAR: done = EvChar((WCHAR)wParam, lParam); break; case WM_WINDOWPOSCHANGING: done = EvWindowPosChanging((WINDOWPOS *)lParam); break; case WM_WINDOWPOSCHANGED: done = EvWindowPosChanged((WINDOWPOS *)lParam); break; case WM_LBUTTONUP: case WM_RBUTTONUP: case WM_NCLBUTTONUP: case WM_NCRBUTTONUP: case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_NCLBUTTONDOWN: case WM_NCRBUTTONDOWN: case WM_LBUTTONDBLCLK: case WM_RBUTTONDBLCLK: case WM_NCLBUTTONDBLCLK: case WM_NCRBUTTONDBLCLK: done = EventButton(uMsg, (int)wParam, MAKEPOINTS(lParam)); break; case WM_KEYUP: case WM_KEYDOWN: done = EventKey(uMsg, (int)wParam, (LONG)lParam); break; case WM_HSCROLL: case WM_VSCROLL: done = EventScrollWrapper(uMsg, LOWORD(wParam), HIWORD(wParam), (HWND)lParam); break; case WM_ENTERMENULOOP: case WM_EXITMENULOOP: done = EventMenuLoop(uMsg, (BOOL)wParam); break; case WM_INITMENU: case WM_INITMENUPOPUP: done = EventInitMenu(uMsg, (HMENU)wParam, LOWORD(lParam), (BOOL)HIWORD(lParam)); break; case WM_MENUSELECT: done = EvMenuSelect(LOWORD(wParam), HIWORD(wParam), (HMENU)lParam); break; case WM_CTLCOLORBTN: case WM_CTLCOLORDLG: case WM_CTLCOLOREDIT: case WM_CTLCOLORLISTBOX: case WM_CTLCOLORMSGBOX: case WM_CTLCOLORSCROLLBAR: case WM_CTLCOLORSTATIC: done = EventCtlColor(uMsg, (HDC)wParam, (HWND)lParam, (HBRUSH *)&result); break; case WM_KILLFOCUS: case WM_SETFOCUS: done = EventFocus(uMsg, (HWND)wParam); break; default: if (uMsg >= WM_APP && uMsg <= 0xBFFF) { result = done = EventApp(uMsg, wParam, lParam); } else if (uMsg >= WM_USER && uMsg < WM_APP || uMsg >= 0xC000 && uMsg <= 0xFFFF) { result = done = EventUser(uMsg, wParam, lParam); } else { result = done = EventSystem(uMsg, wParam, lParam); } break; } return done ? result : DefWindowProc(uMsg, wParam, lParam); }
LRESULT TDlg::WinProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT result = 0; switch (uMsg) { case WM_INITDIALOG: if (rect.left != CW_USEDEFAULT && !(::GetWindowLong(hWnd, GWL_STYLE) & WS_CHILD)) { MoveWindow(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top,FALSE); } if (rect.left == CW_USEDEFAULT) { GetWindowRect(&orgRect); } return EvCreate(lParam); case WM_CLOSE: EvClose(); return 0; case WM_COMMAND: EvCommand(HIWORD(wParam), LOWORD(wParam), lParam); return 0; case WM_SYSCOMMAND: EvSysCommand(wParam, MAKEPOINTS(lParam)); return 0; case WM_TIMER: EvTimer(wParam, (TIMERPROC)lParam); return 0; case WM_DESTROY: EvDestroy(); return 0; case WM_NCDESTROY: if (!::IsIconic(hWnd)) GetWindowRect(&rect); EvNcDestroy(); TApp::GetApp()->DelWin(this); hWnd = 0; return 0; case WM_QUERYENDSESSION: result = EvQueryEndSession((BOOL)wParam, (BOOL)lParam); SetWindowLong(DWL_MSGRESULT, result); return 0; case WM_ENDSESSION: EvEndSession((BOOL)wParam, (BOOL)lParam); return 0; case WM_QUERYOPEN: result = EvQueryOpen(); SetWindowLong(DWL_MSGRESULT, result); return result; case WM_PAINT: EvPaint(); return 0; case WM_NCPAINT: EvNcPaint((HRGN)wParam); return 0; case WM_SIZE: EvSize((UINT)wParam, LOWORD(lParam), HIWORD(lParam)); return 0; case WM_MOVE: EvMove(LOWORD(lParam), HIWORD(lParam)); return 0; case WM_SHOWWINDOW: EvShowWindow((BOOL)wParam, (int)lParam); return 0; case WM_GETMINMAXINFO: EvGetMinMaxInfo((MINMAXINFO *)lParam); return 0; case WM_SETCURSOR: result = EvSetCursor((HWND)wParam, LOWORD(lParam), HIWORD(lParam)); SetWindowLong(DWL_MSGRESULT, result); return result; case WM_MOUSEMOVE: return EvMouseMove((UINT)wParam, MAKEPOINTS(lParam)); case WM_NCHITTEST: EvNcHitTest(MAKEPOINTS(lParam), &result); SetWindowLong(DWL_MSGRESULT, result); return result; case WM_MEASUREITEM: result = EvMeasureItem((UINT)wParam, (LPMEASUREITEMSTRUCT)lParam); SetWindowLong(DWL_MSGRESULT, result); return result; case WM_DRAWITEM: result = EvDrawItem((UINT)wParam, (LPDRAWITEMSTRUCT)lParam); SetWindowLong(DWL_MSGRESULT, result); return result; case WM_NOTIFY: result = EvNotify((UINT)wParam, (LPNMHDR)lParam); SetWindowLong(DWL_MSGRESULT, result); return result; case WM_CONTEXTMENU: result = EvContextMenu((HWND)wParam, MAKEPOINTS(lParam)); SetWindowLong(DWL_MSGRESULT, result); return result; case WM_HOTKEY: result = EvHotKey((int)wParam); SetWindowLong(DWL_MSGRESULT, result); return result; case WM_ACTIVATEAPP: EvActivateApp((BOOL)wParam, (DWORD)lParam); break; case WM_ACTIVATE: EvActivate(LOWORD(wParam), HIWORD(wParam), (HWND)lParam); break; case WM_DROPFILES: EvDropFiles((HDROP)wParam); return 0; case WM_CHAR: EvChar((WCHAR)wParam, lParam); SetWindowLong(DWL_MSGRESULT, 0); return 0; case WM_WINDOWPOSCHANGING: EvWindowPosChanging((WINDOWPOS *)lParam); SetWindowLong(DWL_MSGRESULT, 0); return 0; case WM_WINDOWPOSCHANGED: EvWindowPosChanged((WINDOWPOS *)lParam); SetWindowLong(DWL_MSGRESULT, 0); return 0; case WM_LBUTTONUP: case WM_RBUTTONUP: case WM_NCLBUTTONUP: case WM_NCRBUTTONUP: case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_NCLBUTTONDOWN: case WM_NCRBUTTONDOWN: case WM_LBUTTONDBLCLK: case WM_RBUTTONDBLCLK: case WM_NCLBUTTONDBLCLK: case WM_NCRBUTTONDBLCLK: EventButton(uMsg, (int)wParam, MAKEPOINTS(lParam)); return 0; case WM_KEYUP: case WM_KEYDOWN: EventKey(uMsg, (int)wParam, (LONG)lParam); return 0; case WM_HSCROLL: case WM_VSCROLL: EventScroll(uMsg, LOWORD(wParam), HIWORD(wParam), (HWND)lParam); return 0; case WM_ENTERMENULOOP: case WM_EXITMENULOOP: EventMenuLoop(uMsg, (BOOL)wParam); break; case WM_INITMENU: case WM_INITMENUPOPUP: EventInitMenu(uMsg, (HMENU)wParam, LOWORD(lParam), (BOOL)HIWORD(lParam)); return 0; case WM_MENUSELECT: EvMenuSelect(LOWORD(wParam), (BOOL)HIWORD(wParam), (HMENU)lParam); return 0; case WM_CTLCOLORBTN: case WM_CTLCOLORDLG: case WM_CTLCOLOREDIT: case WM_CTLCOLORLISTBOX: case WM_CTLCOLORMSGBOX: case WM_CTLCOLORSCROLLBAR: case WM_CTLCOLORSTATIC: EventCtlColor(uMsg, (HDC)wParam, (HWND)lParam, (HBRUSH *)&result); SetWindowLong(DWL_MSGRESULT, result); return result; case WM_KILLFOCUS: case WM_SETFOCUS: EventFocus(uMsg, (HWND)wParam); return 0; default: if (uMsg >= WM_APP && uMsg <= 0xBFFF) { result = EventApp(uMsg, wParam, lParam); } else if (uMsg >= WM_USER && uMsg < WM_APP || uMsg >= 0xC000 && uMsg <= 0xFFFF) { result = EventUser(uMsg, wParam, lParam); } else { result = EventSystem(uMsg, wParam, lParam); } SetWindowLong(DWL_MSGRESULT, result); return result; } return FALSE; }