Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何在弹出窗口外单击时隐藏或销毁弹出窗口_Windows_Winapi_Popup - Fatal编程技术网

Windows 如何在弹出窗口外单击时隐藏或销毁弹出窗口

Windows 如何在弹出窗口外单击时隐藏或销毁弹出窗口,windows,winapi,popup,Windows,Winapi,Popup,当点击一个按钮时,我创建了一个弹出式窗口并显示出来。 当我在窗口外单击时,我想隐藏或破坏此窗口。 我可以使用wm_killfocus消息来实现这一点。当窗口收到消息时,隐藏窗口。 但问题是: 当窗口存在时,如果我单击按钮,窗口应该隐藏。 但事实是: 单击按钮时,窗口接收wm_killfocus消息,然后按钮接收wm_lbuttondown消息,窗口在接收wm_killfocus时隐藏,单击消息事件使窗口再次显示。 因此,最后的效果是窗口不隐藏。与其立即销毁窗口,不如通过PostMessage()

当点击一个按钮时,我创建了一个弹出式窗口并显示出来。 当我在窗口外单击时,我想隐藏或破坏此窗口。 我可以使用wm_killfocus消息来实现这一点。当窗口收到消息时,隐藏窗口。 但问题是: 当窗口存在时,如果我单击按钮,窗口应该隐藏。 但事实是: 单击按钮时,窗口接收wm_killfocus消息,然后按钮接收wm_lbuttondown消息,窗口在接收wm_killfocus时隐藏,单击消息事件使窗口再次显示。
因此,最后的效果是窗口不隐藏。

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