2012-09-26 54 views
-1

单击按钮时,我会创建一个带弹出窗口的窗口并显示它。 而且,当我在窗外点击时,我想隐藏或销毁此窗口。 我可以通过使用wm_killfocus消息来做到这一点。当窗口收到消息时,隐藏窗口。 但问题是: 当窗口存在,如果我点击按钮,窗口应该隐藏。但实际上是: 当点击按钮时,窗口收到wm_killfocus消息,然后按钮收到WM_lbuttondown消息,当窗口收到wm_killfocus时隐藏窗口,点击消息事件让窗口再次显示。所以,最后的效果是窗户不要隐藏。如何在弹出窗口外单击时隐藏或销毁弹出窗口

回答

1

而不是立即销毁窗口,而是通过PostMessage()发送自定义窗口消息给自己。如果在收到消息之前单击该按钮,则在某处设置标志并根据需要更新现有窗口。当消息处理程序收到消息时,只有在未设置标志时才隐藏/销毁窗口。

+0

任何人都有另一种方式? – jerui