【发布时间】:2019-07-29 12:32:42
【问题描述】:
有简单的窗口,打开对话框的按钮。但我想为其添加关闭按钮。
我尝试通过添加 WM_SYSMENU 添加关闭按钮,添加 EnableMenuItem,但它不起作用:
最少的代码是:
资源.rc:
IDD_FORMVIEW DIALOGEX 0, 0, 178, 86
STYLE DS_SETFONT | DS_CONTROL | WS_VISIBLE | WS_SYSMENU
EXSTYLE WS_EX_OVERLAPPEDWINDOW
CAPTION "TEST"
FONT 12, "Microsoft Sans Serif", 400, 0, 0xCC
BEGIN
CTEXT "Test",IDC_STATIC,46,4,74,8,0,WS_EX_CLIENTEDGE
END
resource.h:
#define IDD_FORMVIEW 101
Test.cpp:
hwndButton = CreateWindowW(L"BUTTON",
L"ENTER",
WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON | WS_CLIPSIBLINGS,
605, 510, 255, 45,
hWnd, (HMENU)1, NULL, NULL);
case WM_COMMAND:
{
switch (LOWORD(wParam)) {
case 2: {
if (hwndHTDW == NULL) {
hwndHTDW = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_FORMVIEW), hWnd, DialogProc);
ShowWindow(hwndHTDW, SW_SHOW);
UpdateWindow(hwndHTDW);
}
}
break;
}
}
{
switch (msg) {
case WM_INITDIALOG: {
EnableMenuItem(GetSystemMenu(hwnd, FALSE), SC_CLOSE,
MF_BYCOMMAND | MF_ENABLED);
return TRUE;
}
break;
default:
return FALSE;
}
return TRUE;
【问题讨论】:
-
关闭对话框的规范方法是“确定”按钮。有关示例,请参见 docs.microsoft.com/en-us/windows/win32/dlgbox/…。
-
所以我可以创建一个按钮来关闭它,对吧。使用 EndDialog
-
请正确格式化您的代码。
-
是的,使用
EndDialog并将对话框的句柄作为参数输入。