"?"帮助按钮触发WM_HELP _and_ WM_LBUTTONUP
"?" help button triggers WM_HELP _and_ WM_LBUTTONUP
我有一个Windows应用程序,它注册了一个CALLBACK过程来处理对话框的WM_HELP消息,和一个CALLBACK过程来处理自定义按钮的WM_LBUTTONUP消息。
现在,当用户点击"?"按钮,然后点击自定义按钮,帮助打开如预期(鼠标向下),但如果帮助窗口没有阻塞按钮,WM_LBUTTONUP消息也被触发自定义按钮(鼠标向上)。当用户只是在寻求帮助时,这个按钮就会被触发。
是否有办法阻止WM_LBUTTONUP消息被发送,如果按下按钮是为了帮助?
编辑:自定义按钮是使用STATIC控件实现的。我相信这是因为它需要有一个图像,没有边界。因此,它不会发送BN_CLICKED通知。事实上,它似乎根本不会触发父类中的WM_COMMAND。
谢谢
这是正常的。一定要使用按钮的BN_CLICKED通知来查看差异。当用户单击按钮时生成,而不是当用户使用帮助光标时生成。按钮仍然看到正常的按钮上/下消息,所以这不是一个很好的触发检测点击。额外的好处是,按钮现在也可以点击与键盘(空格键)。
一个好的类库会处理这些讨厌的小细节。
一个更好的方法是创建?作为BS_CHECKBOX | BS_PUSHLIKE
样式的自定义控件并捕获鼠标。之后,你会得到所有的WM_LBUTTONDOWN
消息到这个自定义控件,然后你可以使用WindowFromPoint来获得WM_LBUTTONDOWN发生的窗口,并可以发送一个自定义通知到父窗口。然后,父窗口可以显示工具提示或打开帮助文档或丢弃它。
好的,我通过创建SS_NOTIFY样式的自定义按钮(静态控件)来修复它,然后处理WM_COMMAND消息中的STN_CLICKED通知。(SS_NOTIFY在父类中触发WM_COMMAND。)当使用"?"按钮时不会触发。谢谢!
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- "WM" C++是什么意思?
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Threads with Classes and std::packaged_task