Windows Form(.NET,C#)程序使用MFC控件(treeview)DLL,treeview上面的上下左右键不工作

在.NET 2.0的Windows Form应用中,使用C#集成MFC TreeView控件时,遇到键盘上下左右键无法导航的问题。通过实现IMessageFilter接口,捕获并转发WM_KEYDOWN消息到treeview,从而修复键盘导航功能。
摘要由CSDN通过智能技术生成

我刚做完的一个项目,主体是windows form,使用C#开发,基于.NET2.0,里面使用了基于MFC的控件(treeview),大拿坏死出现了一个问题,就是用户点击这个treeview控件,然后使用键盘上的上下左右键进行导航的时候,发现这些键不能工作,使用spy++跟踪这个treeview的消息,发现可以接收到WM_KEYDOWN消息,一段时间找不到解决方案。

 

后来经过几天的研究,找到了一种解决方案:

首先实现 IMessageFilter 接口,然后保存一个指向treeview控件窗口句柄的指针treeHWnd。接着在整个应用程序的入口处调用

Application.AddMessageFilter(myMessageFilter); 这样我们就可以在PreFilterMessage函数里截获WM_KEYDOWN消息,手工把这个消息发给treeview,从而让上下左右键可以正常工作。

  1.     /// <summary>
  2.     /// message filter class
  3.     /// </summary>
  4.     public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值