c++ - 单击 MFC 气球工具提示的 "X"关闭按钮会发送什么事件?

标签 c++ windows mfc tooltip balloon

我正在开发一个非常庞大且复杂的 Windows 应用程序,该应用程序使用 C++ 编写并使用 MFC。

我正在解决这个错误,如果用户按下气球工具提示,它不会关闭,只有在超时后才会关闭。

事情是我得到了 NIN_BALLOONUSERCLICK 事件并设法关闭了工具提示,但我似乎无法捕捉到当用户按下上部的“X”按钮时引发的事件右上角。

谁能帮帮我?我应该寻找什么事件?我花了大约 3 天时间在互联网上搜索,但似乎没有人知道一种方法。

如果你能告诉我如何让“X”关闭按钮消失,那也可以!

最佳答案

您找不到任何此类事件的原因是因为不存在。无法区分因为用户点击了某处而关闭的气球和因为用户专门点击关闭(“X”)按钮而关闭的气球。

更多信息可以在 Raymond Chen 博客上的这篇文章中找到:Why don't notification icons get a message when the user clicks the "X" button?

基本上,该事件的存在不会阻止您做坏事,例如惹恼您的用户。您完全没有理由需要根据用户关闭气球通知的方式执行不同的操作。

让“X”按钮消失绝对是错误的选择。要求这样做会让听起来您正是 Windows Shell 团队试图保护我们免受其害的开发人员。很高兴有人支持我们作为您应用程序的毫无戒心的用户。用户喜欢能够忽略的东西。可用性研究一再表明,当没有“取消”按钮时,用户会感到非常紧张和困惑。您需要在合理、用户友好的设计约束下工作。

NIN_BALLOONUSERCLICK 是正确的选择。当用户单击它时,工具提示将被关闭。 documentation更详细地解释了所有可用的各种通知。

关于c++ - 单击 MFC 气球工具提示的 "X"关闭按钮会发送什么事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6723905/

相关文章:

c++ - 在 MFC 中更改按钮的光标

c++ - 如何获取MFC对话框的对话框名称或对话框类?

c++ - 参数前的 "class"是什么意思?

c++ - 正确删除在别处分配的 std::list 中的指针

c++ - 将多个参数传递给 _beginThreadEx

windows - 使用for循环和变量替换批量分割文件路径

c++ - 在列表框中添加字符串 (MFC)

c++ - 如何将正则表达式模式存储为正则表达式对象或字符串?

c++ - 类和运算符

python - sys 模块位于哪里,或者如何在 Win 11 和 Python 中找到它