gpt4 book ai didi

c++ - 如何使用 WM_CLOSE 关闭子窗口?

转载 作者:行者123 更新时间:2023-11-30 16:43:20 26 4
gpt4 key购买 nike

我将子 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。

最佳答案

我找到了单击关闭按钮时触发事件 WM_NCLBUTTONUP 的解决方案。

case WM_NCLBUTTONUP:
ShowWindow(hwnd, SW_HIDE);
return 0;

关于c++ - 如何使用 WM_CLOSE 关闭子窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45341529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com