2013-04-01 40 views
0

我想創建一個窗口,它會在wm_nclbuttondown處理程序中失去焦點時解散,就像firefox的菜單按鈕窗口一樣。但我沒有設法做到這一點。新窗口在創建後會立即失去焦點。如何在處理wm_nclbuttondown時正確設置焦點?

所以我挖有觀測++,發現WM_NCLBUTTONDOWN總是會引起關注的主窗口,這裏是記錄與間諜++消息:

enter image description here

其中0xb13f2是主窗口的HWND,並0x46139a是新的窗口hwnd。

那麼如何正確設置焦點?

+1

如果您想在失去焦點時執行某些操作,請使用WM_KILLFOCUS消息。 –

回答

0

我嘗試了很多方法:

  1. 預翻譯wm_nclbuttdown到WM_LBUTTONDOWN。
  2. nchittest將所有窗口區域設置爲HTCLIENT,然後嘗試處理 的移動和手動調整大小,但這種修改太大而不能繼續執行 。
  3. in wm_nclbuttondown handler,sendmessage wm_lbuttondown。
  4. call setfocus很多。

...

一些作品,但帶來其它問題。最後我用spy ++記錄了firefox的消息,並發現只需在需要處理左鍵按下消息的區域中使nchittest返回HTCLIENT即可。