LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: // For now, the Help dialog item is disabled because of lacking of HTML Help support EnableMenuItem(GetMenu(hWnd), ID_HELP_HELPTOPICS, MF_BYCOMMAND | MF_GRAYED); CreateWindowExW(0, szChildClass, NULL, WS_CHILD | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, (HMENU)0, hInst, 0); break; case WM_COMMAND: if (!_CmdWndProc(hWnd, message, wParam, lParam)) return DefWindowProcW(hWnd, message, wParam, lParam); break; case WM_ACTIVATE: if (LOWORD(hWnd) && g_pChildWnd) SetFocus(g_pChildWnd->hWnd); break; case WM_SIZE: resize_frame_client(hWnd); break; case WM_TIMER: break; case WM_INITMENU: OnInitMenu(hWnd); break; case WM_ENTERMENULOOP: OnEnterMenuLoop(hWnd); break; case WM_EXITMENULOOP: OnExitMenuLoop(hWnd); break; case WM_MENUSELECT: OnMenuSelect(hWnd, LOWORD(wParam), HIWORD(wParam), (HMENU)lParam); break; case WM_SYSCOLORCHANGE: /* Forward WM_SYSCOLORCHANGE to common controls */ SendMessageW(g_pChildWnd->hListWnd, WM_SYSCOLORCHANGE, 0, 0); SendMessageW(g_pChildWnd->hTreeWnd, WM_SYSCOLORCHANGE, 0, 0); break; case WM_DESTROY: WinHelpW(hWnd, getAppName(), HELP_QUIT, 0); SaveSettings(); PostQuitMessage(0); default: return DefWindowProcW(hWnd, message, wParam, lParam); } return 0; }
LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: CreateWindowEx(0, szChildClass, NULL, WS_CHILD | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, (HMENU)0, hInst, 0); break; case WM_COMMAND: if (!_CmdWndProc(hWnd, message, wParam, lParam)) return DefWindowProc(hWnd, message, wParam, lParam); break; case WM_ACTIVATE: if (LOWORD(hWnd)) SetFocus(g_pChildWnd->hWnd); break; case WM_SIZE: resize_frame_client(hWnd); break; case WM_TIMER: break; case WM_INITMENU: OnInitMenu(hWnd); break; case WM_ENTERMENULOOP: OnEnterMenuLoop(hWnd); break; case WM_EXITMENULOOP: OnExitMenuLoop(hWnd); break; case WM_MENUSELECT: OnMenuSelect(hWnd, LOWORD(wParam), HIWORD(wParam), (HMENU)lParam); break; case WM_SYSCOLORCHANGE: /* Forward WM_SYSCOLORCHANGE to common controls */ SendMessage(g_pChildWnd->hListWnd, WM_SYSCOLORCHANGE, 0, 0); SendMessage(g_pChildWnd->hTreeWnd, WM_SYSCOLORCHANGE, 0, 0); break; case WM_DESTROY: WinHelp(hWnd, _T("regedit"), HELP_QUIT, 0); PostQuitMessage(0); default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
/** * Windows プロシージャ (WindowProc) を提供します * @param[in] message 処理される Windows メッセージを指定します * @param[in] wParam メッセージの処理に使用する追加情報を提供します * @param[in] lParam メッセージの処理に使用する追加情報を提供します * @return 戻り値は、メッセージによって異なります */ LRESULT CTraceWnd::WindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam) { switch (nMsg) { case WM_CREATE: return OnCreate(reinterpret_cast<LPCREATESTRUCT>(lParam)); case WM_SYSCOMMAND: OnSysCommand(wParam, lParam); return DefWindowProc(nMsg, wParam, lParam); case WM_ENTERMENULOOP: OnEnterMenuLoop(wParam); break; case WM_MOVE: if (!(GetStyle() & (WS_MAXIMIZE | WS_MINIMIZE))) { RECT rc; GetWindowRect(&rc); tracecfg.posx = rc.left; tracecfg.posy = rc.top; } break; case WM_SIZE: // window resize if (!(GetStyle() & (WS_MAXIMIZE | WS_MINIMIZE))) { RECT rc; GetWindowRect(&rc); tracecfg.width = rc.right - rc.left; tracecfg.height = rc.bottom - rc.top; } m_wndView.MoveWindow(0, 0, LOWORD(lParam), HIWORD(lParam)); break; case WM_SETFOCUS: m_wndView.SetFocus(); break; case WM_CTLCOLORSTATIC: case WM_CTLCOLOREDIT: SetTextColor((HDC)wParam, VIEW_FGCOLOR); SetBkColor((HDC)wParam, VIEW_BGCOLOR); return reinterpret_cast<LRESULT>(m_hBrush); case WM_CLOSE: break; case WM_DESTROY: if (m_hBrush) { ::DeleteObject(m_hBrush); m_hBrush = NULL; } if (m_hFont) { ::DeleteObject(m_hFont); m_hFont = NULL; } break; #if 0 case WM_ENTERSIZEMOVE: winloc_movingstart(); break; case WM_MOVING: winloc_movingproc((RECT *)lParam); break; case WM_ERASEBKGND: break; #endif default: return DefWindowProc(nMsg, wParam, lParam); } return FALSE; }