单击按钮时,我创建一个带弹出样式的窗口并显示它。 而且,当我在窗外点击时,我想隐藏或破坏这个窗口。 我可以使用wm_killfocus消息来做到这一点。当窗口收到消息时,隐藏窗口。 但问题是: 当窗口存在时,如果我单击按钮,窗口应该隐藏。 但事实是: 当单击按钮时,窗口接收wm_killfocus消息,然后按钮接收WM_lbuttondown消息,当接收到wm_killfocus时窗口隐藏,并且单击消息事件让窗口再次显示。 所以,最后的效果是窗口不要隐藏。
答案 0 :(得分:1)
不要立即销毁窗口,而是通过PostMessage()
向自己发布自定义窗口消息。如果在收到消息之前单击按钮,请在某处设置标志并根据需要更新现有窗口。当消息处理程序收到消息时,仅在未设置标志时隐藏/销毁窗口。