处理wm_nclbuttondown时如何正确设置焦点?

时间:2013-04-01 10:17:32

标签: winapi user-interface

我想创建一个窗口,当它在wm_nclbuttondown处理程序中失去焦点时会解散,就像firefox的菜单按钮窗口一样。但我没有设法做到这一点。新窗口在创建后立即失去焦点。

所以我用spy ++挖掘,发现WM_NCLBUTTONDOWN总是会导致主窗口集中,这里是用spy ++记录的消息:

enter image description here

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

然后如何正确设置焦点?

1 个答案:

答案 0 :(得分:0)

我尝试了很多方法:

  1. 将wm_nclbuttd预翻译为wm_lbuttondown。
  2. nchittest所有窗口区域为HTCLIENT,然后尝试处理 移动和手动调整大小,但这种修改太大了 继续。
  3. 在wm_nclbuttondown handler中,sendmessage wm_lbuttondown。
  4. 调用setfocus很多。
  5. ...

    有些作品,但带来其他问题。最后我使用spy ++ log记录了firefox的消息,发现只需要在你需要处理左键按钮消息的区域中使nchittest返回HTCLIENT。