有WM_QUERYHIDE / CLOSE或类似的消息吗?

时间:2016-09-27 17:48:45

标签: windows shell winapi

我有一个使用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

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

enter image description here

这只是一个考验。

1 个答案:

答案 0 :(得分:2)

您可以尝试将WS_MINIMIZEBOX添加到窗口样式中:WS_POPUP | WS_MINIMIZEBOX。