我有一个已创建的属性表,并且每个选项卡页面都共享相同的pfnDlgProc
。在pfnDlgProc
中,我有以下代码:
switch (msg) {
case WM_NOTIFY:
nmhdr = (NMHDR*)lParam;
switch (nmhdr->code) {
case PSN_QUERYCANCEL:
printf("PSN_QUERYCANCEL\n");
SetWindowLong(nmhdr->hwndFrom, DWL_MSGRESULT, FALSE);
return TRUE;
}
break;
...
}
当我单击属性表上的“取消”按钮时,会打印
PSN_QUERYCANCEL
,但属性表不会关闭。为什么是这样?我还需要做其他事情以使其关闭/使其关闭吗?我知道我可以将DestroyWindow(nmhdr->hwndFrom)
添加到处理程序中,但这是正确的方法吗? 最佳答案
您正在将DWL_MSGRESULT设置为向您发送通知的窗口句柄,但不一定是要为其处理WM_NOTIFY的对话框的窗口。代替使用nmhdr-> hwndFrom窗口句柄,请尝试使用传递给pfnDlgProc的HWND。
关于c++ - PSN_QUERYCANCEL无法关闭属性表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7082915/