非模态对话框,esc键为何不好用了呢
非模态对话框,esc键为啥不好用了呢?
我用VS2010 使用win32 api开发,在主窗口上点击按钮创建了一个非模态对话框,我自己写了对话框的窗口过程,
也添加了处理ESC消息的代码,内容是退出对话框,,为啥不好用呢,就似非模态对话框弹出来后,点ESC也不会消失。。
------解决方案--------------------
我用VS2010 使用win32 api开发,在主窗口上点击按钮创建了一个非模态对话框,我自己写了对话框的窗口过程,
也添加了处理ESC消息的代码,内容是退出对话框,,为啥不好用呢,就似非模态对话框弹出来后,点ESC也不会消失。。
------解决方案--------------------
- C/C++ code
while (GetMessage(&msg, NULL, 0, 0)) { if (!IsDialogMessage(hwnd, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } }
------解决方案--------------------
加上IsDialogMessage后,按ESC时会发WM_COMMAND给对话框,ID为2,相当于按下取消按钮
- C/C++ code
case WM_COMMAND: switch (wParam) { case MAKEWPARAM(IDCANCEL, BN_CLICKED): DestroyWindow(hwnd); } case WM_DESTROY: PostQuitMessage(0);