0
我從子窗口如何使用WM_CLOSE關閉子窗口?
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
與關閉按鈕手柄彈出消息和WndchildProc
。我可以用這種方法關閉子女hwnd
。
但是,當按下兒童hwnd
的關閉按鈕時,什麼也沒有發生。如果關閉按鈕parent-hwnd
按下,則WM_DESTROY
消息觸發。 因此,我無法用其關閉按鈕關閉(僅)子窗口。
如何使用關閉按鈕關閉子窗口?
更新:複製中缺少文本,添加:CallWindowProc默認情況下。
您的窗口過程需要調用所有其他情況下的默認窗口過程。 – EJP
子窗口是具有'WS_CHILD'風格的窗口。你的問題沒有。我沒有關注,你試圖解決什麼問題。此外,現在是時候將舊的(危險的)方法拋棄到子類控件,並改爲使用提供的基礎結構(請參見[子類化控件](https://msdn.microsoft.com/zh-cn/library/windows/desktop /bb773183.aspx))。 – IInspectable