首页 > Linux操作系统 > Linux操作系统 > 指针与句柄的简单转换(转)
指针的使用在编程过程中至关重要,恰到好处并能正确无误的使用指针不但能够提高程序自身的运行效率,而且有助于节省程序执行所需要消耗的资源。指针对应着某个数据在内存空间中的地址,得到了指针就可以自由地修改该数据。句柄代表指针的“指针”,也可以将其比作表中数据项的索引值( 表对应某个进程自身的内存空间 )。句柄是间接的引用对象。
指针和句柄的不同之处:
具体转换:
( 句柄转为指针 )
CWnd* pWnd=FromeHandle(hMyHandle);
pWnd->SetWindowText("Hello World!");
or
CWnd* pWnd;
pWnd->Attach(hMyHandle);
MFC类中有的还提供了标准方法,比如Window句柄:
static CWnd* PASCAL FromHandle(
HWND hWnd
);
HWND GetSafeHwnd( ) const;
对于位图:
static CBitmap* PASCAL FromHandle(
HBITMAP hBitmap
);
static CGdiObject* PASCAL FromHandle(
HGDIOBJ hObject
);
HGDIOBJ GetSafeHandle( ) const;
当然,更详细的信息需要在具体使用中自我查询。
建 议:指针和句柄的使用属于比较复杂、危险性较高的应用,在具体实践中,如果可以,尽量不要使用指针和句柄,最好选择现有的、封装完好的方式来实现,更别提指针同句柄的转换了,它更加危险。
比如在操作字符串时,尽量使用CString类来实现,通过定义好的构造、析构函数来完成分配和回收,最好不要通过指针来动态操作。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10294527/viewspace-126227/ ,如需转载,请注明出处,否则将追究法律责任。