那些“指针”

   CWnd window class 窗口基类
   HWND window handle 窗口句柄
   HANDLE handle 很明显,就句柄

 

HWNDSDK定义的类型,是一个无确切意义的32-bit值,在调用API时用于指代窗体。

   

CWnd是MFC的窗口基类。 HWND是Windows窗口句柄。 前者是一个C++对象,后者是一个类似于指针地址的数字型对象。
CWnd可以看成是对Windows窗口操作的封装,而封装的核心就是使用Windows窗口句柄(即HWND)来操作窗口.

CWnd*是一个有确切意义的指针,指向一个MFC窗体类CWnd的实例。因为MFCSDK做了封装,大部分调用都可以用CWnd*作为参数,所以很容易混淆。从一个CWnd*获取句柄的方法是pwnd->GetSafeHwnd (),他比pwnd->m_hWnd安全,因为前者在pwnd=NULL的时候返回NULL,而后者出现access violation

   

HWND转换到CWnd*一个可以使用的方法是CWnd::FromHandle

CWnd* ptempwnd = CWnd::FromHandle (HWND)//如果HWND存在对应的CWnd*,则返回其指针,否则,创建一个MFC临时窗体并返回其指针。

注意这个函数会返回临时窗体的指针,如果需要更安全,调用   CWnd:: FromHandlePermanent,他在不存在对应的CWnd*时返回NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值