我有一个我创建的属性表,每个标签页共享相同的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)
添加到处理程序中,但这是正确的方法吗?
答案 0 :(得分:0)
您正在向您发送通知的窗口句柄上设置DWL_MSGRESULT,但不一定是您正在处理WM_NOTIFY的对话框的窗口。不要使用nmhdr-> hwndFrom窗口句柄,而是尝试使用传递给pfnDlgProc的HWND。