RT,用PeekMessage()试了试,没成功,不大会用这个函数。例如:
在一个View中存在一个TreeCtrl,TreeCtrl响应两个消息NM_CLICK,TVN_SELCHANGED。
我在点击树形控件的同时改变选择的节点,这时产生了NM_CLICK,TVN_SELCHANGED这两个消息。
我想在NM_CLICK消息的处理函数中删除产生的TVN_SELCHANGED消息,使其不再调用TVN_SELCHANGED消息的处理函数。那位大侠发个例子给小弟看看,thanks~~
在一个View中存在一个TreeCtrl,TreeCtrl响应两个消息NM_CLICK,TVN_SELCHANGED。
我在点击树形控件的同时改变选择的节点,这时产生了NM_CLICK,TVN_SELCHANGED这两个消息。
我想在NM_CLICK消息的处理函数中删除产生的TVN_SELCHANGED消息,使其不再调用TVN_SELCHANGED消息的处理函数。那位大侠发个例子给小弟看看,thanks~~
解决方案 »
- DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE是为了“动态创建"类的实例而定义的宏//有啥用处???
- DLL 代码注入
- CCoolBar的问题?
- 这个问题问了几遍了,可能因为是sdk的所以回答的人很少,不过我还是想问最后一遍
- 求助: 类(或对象)的size是如何计算的?
- ReadFile函数是不是先足?请各位高手指点一下!焦急ing!
- ksyou请来接分,谢谢回复!
- 在win2000下 怎么使edit透明
- 请问MFC中的DDX_Control函数是由哪个API函数构成的?
- 如何实现CAN在不同应用程序中共享
- 怎么样读取数据库字段最后的数据?
- CSocket连接时,IP地址的问题
GetMessage()获取,并删除
如果我只对两个TreeCtrl分别做TVN_SELCHANGED处理,可以完成单个TreeCtrl的功能。
但是存在一个严重的问题:
我先选中Tree1的一个节点A,ListView中显示Tree1 A节点对应的内容,没问题;
再选中Tree2的一个节点B,ListView中显示Tree2 B节点对应的内容,也没问题;
最后再选回我最开始选中的Tree1的A节点,ListView中仍然显示Tree2 B节点对应的内容。
问题出在这里:
第一次操作产生了TVN_SELCHANGED消息,Tree1对其进行了处理。
第二次操作也产生了TVN_SELCHANGED消息,Tree2对其进行了处理。
但是第三次操作并没有改变选中,所以并没有产生TVN_SELCHANGED消息。后来我对其进行了改进,对两个TreeCtrl分别增加了NM_CLICK消息。
通过获得坐标,调用HitTest(),也可完成相应的功能。但是这样就会出现用鼠标点击并改变节点时,进行两遍重复功能的操作。
如果只做NM_CLICK消息处理,键盘改变选中节点便不好使了~~所以才会有这个帖子~~
通过逻辑判断也可以避免重复操作,但是我就是想用删除消息的方法。
麻烦大家了,thanks
下面把那个消息注释提不行吗。
但是它产生了咱们可以切断它的传输路径,比如在PreTranslateMessage中过滤掉消息,
这样在到达你的消息处理函数中就不会收到此消息了。
你可以试试看,过滤掉后消息处理函数中还保留对此消息的处理代码,你看它还执行不。
你现在的问题按我在12楼的回复就可以解决,做法也很简单。
恩,功能我已经实现了,就是用逻辑判断的方法。
但是用过滤消息的方法可以实现吗?
如果可以实现,能给些代码吗,小弟初学~~
thank you