c++ - 如何找出哪个窗口触发了 WM_PARENTNOTIFY?
问题描述
当我将一个按钮(A)的父级设置为另一个按钮(B)时,我发现它不会触发WM_COMMAND
按钮A的消息,并且WM_PARENTNOTIFY
窗口(按钮A的父级)会收到消息。但是查了reference之后,发现没有办法得到按钮B的标识,like HMENU
or HWND
。有人可以帮助我吗?
解决方案
是的,有人将一个按钮放入另一个按钮,或者说将一个按钮的父级设置为另一个按钮,这确实很奇怪,但是当父级按钮的样式为 时,它确实具有一些现实意义BS_GROUPBOX
,就像Frame
在 Visual基本的。
我对这个问题的解决方案是SetWindowSubClass
在创建一个新控件后调用,这样在调用这个 API 时设置的新回调函数可以接收到触发这个事件的控件的真实 hWnd。
有一点需要说明:
return DefSubclassProc(hWnd, uMsg, wParam, lParam);
如果控件不处理该事件,请使用。删除
WS_CHILD
那些调用的控件的样式SetWindowSubClass
,或者这些控件无法正确显示,唯一显示的只是一个空窗口。
感谢所有在这个问题上帮助我的人!
推荐阅读
- ubuntu - openssl/wget 仅在我明确指定 ca 目录时才有效
- python - 以其他列为条件获取累积和 Pandas
- ios - 如何修复博览会开始抛出“模拟器已安装但被识别为 'com.apple.CoreSimulator.SimulatorTrampoline';不知道那是什么”
- jquery - 使用 SASS 时是否也需要使用 jQuery.noConflict() ?
- c - inotify IN_CLOSE_WRITE 仅检测复制到目录的文件
- machine-learning - 我将如何标记卷积神经网络的训练和测试数据?
- amazon-s3 - 公共存储桶的 S3 CORS 策略
- laravel - Laravel - 如何使用给定的类和属性保存任务并每分钟再次获取它?
- javascript - 如何使用 jquery 将 css 添加到 iframe 中?
- javascript - 在javascript中根据逗号拆分单个数组