我刚做完的一个项目,主体是windows form,使用C#开发,基于.NET2.0,里面使用了基于MFC的控件(treeview),大拿坏死出现了一个问题,就是用户点击这个treeview控件,然后使用键盘上的上下左右键进行导航的时候,发现这些键不能工作,使用spy++跟踪这个treeview的消息,发现可以接收到WM_KEYDOWN消息,一段时间找不到解决方案。
后来经过几天的研究,找到了一种解决方案:
首先实现 IMessageFilter 接口,然后保存一个指向treeview控件窗口句柄的指针treeHWnd。接着在整个应用程序的入口处调用
Application.AddMessageFilter(myMessageFilter); 这样我们就可以在PreFilterMessage函数里截获WM_KEYDOWN消息,手工把这个消息发给treeview,从而让上下左右键可以正常工作。
- /// <summary>
- /// message filter class
- /// </summary>
- public class<

在.NET 2.0的Windows Form应用中,使用C#集成MFC TreeView控件时,遇到键盘上下左右键无法导航的问题。通过实现IMessageFilter接口,捕获并转发WM_KEYDOWN消息到treeview,从而修复键盘导航功能。
最低0.47元/天 解锁文章
2957

被折叠的 条评论
为什么被折叠?



