windows – 有WM_QUERYHIDE / CLOSE或类似消息吗?

我有一个使用WS_POPUP / WS_EX_APPWINDOW创建的顶级窗口,因此它使用非标准框架,其标题显示在任务栏上.

但是如果重要的话,我有自定义的WM_NCHITTEST处理程序.

当窗口“折叠到任务栏”(从屏幕上删除)并且用户单击任务栏上的图标/标题时,窗口将获得WM_QUERYOPEN消息并由DefWindowProc打开.

但是当窗口打开并且用户点击任务栏中的图标/标题时,窗口就会被取消激活 – 我需要将其折叠.

当鼠标位于任务栏中的标题时,shell是否会向窗口发送任何消息?

我试图重现标准的Windows Shell行为 – 首先单击任务栏的窗口图标显示窗口,然后第二次单击 – 隐藏它.第一部分(揭示)默认工作但不是第二部分(隐藏).

更新:以下是我的窗口在屏幕上获取的消息,用户点击任务栏中的标题:

<01287> 00150DAE S WM_NCACTIVATE fActive:False
<01288> 00150DAE R WM_NCACTIVATE fDeactivateOK:True
<01289> 00150DAE S WM_ACTIVATE fActive:WA_INACTIVE fMinimized:False hwndPrevious:(null)
<01290> 00150DAE R WM_ACTIVATE
<01291> 00150DAE S WM_ACTIVATEAPP fActive:False dwThreadID:000041EC
<01292> 00150DAE R WM_ACTIVATEAPP
<01293> 00150DAE S WM_KILLFOCUS hwndGetFocus:(null)
<01294> 00150DAE R WM_KILLFOCUS
<01295> 00150DAE S WM_IME_SETCONTEXT fSet:0 iShow:C000000F
<01296> 00150DAE S WM_IME_NOTIFY dwCommand:IMN_CLOSESTATUSWINDOW dwCommand:00000001 dwData:00000000
<01297> 00150DAE R WM_IME_NOTIFY
<01298> 00150DAE R WM_IME_SETCONTEXT

窗口样式:WS_POPUP | WS_VISIBLE | WS_SYSMENU

Window ex-styles:WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_APPWINDOW

如果重要,窗口看起来像这样:

《windows – 有WM_QUERYHIDE / CLOSE或类似消息吗?》

那只是一个考验.

最佳答案 您可以尝试将WS_MINIMIZEBOX添加到窗口样式,如下所示:WS_POPUP | WS_MINIMIZEBOX.

点赞