我使用关闭按钮创建子hwnd
作为弹出窗口,并从子窗口创建句柄消息WndchildProc
m_childHwnd = CreateWindowEx(
NULL,
TEXT("STATIC"), TEXT("childW"),
WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
m_parentHWnd, NULL,
GetModuleHandle(NULL), NULL
);
m_childhProc = (WNDPROC)SetWindowLongPtr(m_childHwnd , GWLP_WNDPROC, (LONG_PTR)WndChildProc);
static LRESULT CALLBACK WndChildProc(HWND hwnd, UINT message, WPARAM wParam,
LPARAM lParam)
{
switch (message)
{
case WM_CLOSE:
DestroyWindow(hwnd);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
default:
return CallWindowProc(m_childhProc, hwnd, message, wParam, lParam);
}
我预计当我按下子窗口的关闭按钮时,将触发消息WM_CLOSE
。我可以用这种方式关闭孩子hwnd
。
但是当按下hwnd
的关闭按钮时,没有任何事情发生。如果按下parent-hwnd
的关闭按钮,则会WM_DESTROY
消息触发。
所以,我不能用它的关闭按钮关闭(只是)子窗口。
如何通过关闭按钮关闭子窗口?
更新:复制时缺少文本,添加:默认情况下为CallWindowProc。
答案 0 :(得分:0)
单击关闭按钮时,我找到了带有事件WM_NCLBUTTONUP触发器的解决方案。
case WM_NCLBUTTONUP:
ShowWindow(hwnd, SW_HIDE);
return 0;