私はWS_POPUP
/WS_EX_APPWINDOW
で作成されたトップレベルのウィンドウを持っていますので、非標準のフレームを使用し、そのキャプションはタスクバーに表示されます。 ただし、私はカスタムWM_NCHITTEST
ハンドラを持っています。WM_QUERYHIDE/CLOSEまたは同様のメッセージがありますか?
ウィンドウがタスクバーに折りたたまれて(画面から削除され)、ユーザーがタスクバーのアイコン/キャプションをクリックすると、ウィンドウにはWM_QUERYOPEN
というメッセージが表示され、DefWindowProcによって開かれます。
しかし、ウィンドウが開かれ、ユーザーがタスクバーのアイコン/キャプションをクリックすると、ウィンドウが非アクティブになります。私はそれを折りたたむ必要があります。
マウスがタスクバーのキャプション上にあるときに、シェルからウィンドウに送信されるメッセージはありますか?
標準的なWindowsシェルの動作を再現しようとしています - まず、タスクバーのウィンドウアイコンをクリックするとウィンドウが表示され、もう一度クリックすると非表示になります。最初の部分(公開)はデフォルトでは動作しますが、2番目の動作(隠蔽)では動作しません。
<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
ウィンドウの元のスタイル:WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_APPWINDOW
UPDATE:それはタスクバーにそのキャプションの画面とユーザークリックにあるときにここに私のウィンドウが取得するメッセージです
このような場合、ウィンドウは次のようになります。
これは単なるテストです。
私は、[WM_SIZE](https://msdn.microsoft.com/en-us/library/windows/desktop/ms632646.aspx)が遅すぎる(つまり、ウィンドウが既に最小化されている)しかし、おそらく[WM_WINDOWPOSCHANGING](https://msdn.microsoft.com/en-us/library/windows/desktop/ms632653.aspx)が、文書化されていない 'SWP_STATECHANGED'フラグを使って参考になるかもしれません。 – IInspectable
ウィンドウが画面上にあり、タスクバーのアイコンをクリックすると、その位置は変化しません。実際には、私はWM_POSWINDOWCHANGINGメッセージは表示されません。フォーカスとしてWM_ACTIVATEのみがウィンドウからタスクバーに移動します。 –
システムメニューがなくても、ウィンドウに[WM_SYSCOMMAND](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646360.aspx)メッセージが表示されますか? – IInspectable