CANCEL){ MessageBox(hwnd, "Dialog exited with IDCANCEL.", "Notice", MB_OK | MB_ICONINFORMATION); } else if(ret == -1){ MessageBox(hwnd, "Dialog failed!", "Error", MB_OK | MB_ICONINFORMATION); } } break; case ID_FILE_EXIT: PostMessage(hwnd,WM_CLOSE,NULL,NULL); break; case ID_STUFF_GO: MessageBox(hwnd,"you click the GO","Menu MessageBox",MB_OK | MB_ICONEXCLAMATION); break; } break; case WM_LBUTTONDOWN: { char szFileName[MAX_PATH]; HINSTANCE hInstance = GetModuleHandle(NULL); GetModuleFileName(hInstance, szFileName, MAX_PATH); MessageBox(hwnd, szFileName, "This program is:", MB_OK | MB_ICONINFORMATION); } break; case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } 这就是我用来创建我的关于对话框的代码,你应该看出来这应该移到你的WM_COMMAND消息处理的代码中去,如果你对这点还不清楚,你可能需要复习关于菜单的那篇文章.ID_HELP_ABOUT是我的Help->About菜单项的标识. 因为我们要我们的主窗口的菜单来创建这个对话话,我们显然需要把这些代码放到我们主窗口的WndProc()中去,而不是对话框的过程中. 现在我存储了调用DialogBox()的返回值,这样你就可以观察你点击两个按钮的效果,在对话框中按Esc,Enter等等...这样做也展示了如何通过对话框的返回值来判断是否调用成功,和用 用选择,或是你想从你的对话框过程中想返回给调用者的任何消息. [cpp] DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc); 这是唯一重要的地方,你可以把这段代码放到你想要对话框出现的任何地方.IDD_ABOUT是对话框资源的标识.hwnd是对话框的父窗口的句柄.AboutDlgProc()当然是用来控制对话框的对话过程.

|