[CF.Skills]WinCE互操作时传递托管控件句柄的小技巧

在和Native Code打交道的时候,我们经常要传递某个控件(如form)的句柄(handle)给本地代码。下面的代码演示了如何使用Control的Copture属性和SetCapture,GetCapture方法来实现这个过程:
class  WinAPI
{
   [DllImport(
"coredll.dll")]
   
private static extern IntPtr SetCapture(IntPtr hWnd);

   [DllImport(
"coredll.dll")]
   
private static extern IntPtr GetCapture();

   
public static IntPtr GetHWnd(Control ctrl)
   
{
      IntPtr hOldWnd 
= GetCapture();//获取当前活动窗体句柄
      ctrl.Capture 
= true;//设置ctrl为窗体焦点
      IntPtr hWnd 
= GetCapture();获取当前焦点句柄(即ctrl)        
      ctrl.Capture 
= false;
      SetCapture(hOldWnd);//还原Capture状态
      
return hWnd;
   }

}
调用的时候:
IntPtr hWndButton =  WinAPI.GetHWnd(button1);
再把这个intPtr传给本地需要的函数中就Ok了。
简单吧!

Enjoy it !

黄季冬
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值