-1

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

4

1 回答 1

1

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

于 2012-09-26T23:14:29.443 回答