VC++窗口句柄和指针的相互转换.doc

VC++窗口句柄和指针的相互转换.doc

ID:57691150

大小:13.50 KB

页数:2页

时间:2020-09-01

VC++窗口句柄和指针的相互转换.doc_第1页
VC++窗口句柄和指针的相互转换.doc_第2页
资源描述:

《VC++窗口句柄和指针的相互转换.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VC中窗口ID,句柄,指针三者相互转换函数ID--HANDLE--HWND三者之间的互相转换id->句柄hWnd=::GetDlgItem(hParentWnd,id);id->指针CWnd::GetDlgItem();句柄->idid=GetWindowLong(hWnd,GWL_ID);句柄->指针CWnd*pWnd=CWnd::FromHandle(hWnd);指针->IDid=GetWindowLong(pWnd->GetSafeHwnd,GWL_ID);GetDlgCtrlID();指针->句

2、柄hWnd=cWnd.GetSafeHandle()ormywnd->m_hWnd;指针的使用在编程过程中至关重要,恰到好处并能正确无误的使用指针不但能够提高程序自身的运行效率,而且有助于节省程序执行所需要消耗的资源。指针对应着某个数据在内存空间中的地址,得到了指针就可以自由地修改该数据。句柄代表指针的“指针”,也可以将其比作表中数据项的索引值(表对应某个进程自身的内存空间)。句柄是间接的引用对象。指针和句柄的不同之处:句柄所指的可以是一个很复杂的结构,并且很有可能与系统有关的,比如上面所说线程的句柄,

3、它指向的就是一个类或者结构,它和系统有很密切的关系。当一个线程由于不可预料的原因而终止时,系统就可以通过句柄来回收它所占用的资料,如CPU,内存等等。反过来想,这些句柄中的某一些,是与系统进行交互用的。指针它也可以指向一个复杂的结构,但通常是由用户自我定义的,所以一些必需的工作都要由用户自己完成,特别是在删除的时候。另外需要注意的是句柄往往有自己的存在区限,比如一个进程,如果将其传递到另一个进程中,句柄也就失去了意义(表中数据项的索引值,索引离开了具体的表也就失去了意义)。具体转换:(句柄转为指针)CW

4、nd*pWnd=FromeHandle(hMyHandle);pWnd->SetWindowText("HelloWorld!");orCWnd*pWnd;pWnd->Attach(hMyHandle);MFC类中有的还提供了标准方法,比如Window句柄:staticCWnd*PASCALFromHandle(HWNDhWnd);HWNDGetSafeHwnd()const;对于位图:staticCBitmap*PASCALFromHandle(HBITMAPhBitmap);staticCGdiOb

5、ject*PASCALFromHandle(HGDIOBJhObject);HGDIOBJGetSafeHandle()const;当然,更详细的信息需要在具体使用中自我查询。建议:指针和句柄的使用属于比较复杂、危险性较高的应用,在具体实践中,如果可以,尽量不要使用指针和句柄,最好选择现有的、封装完好的方式来实现,更别提指针同句柄的转换了,它更加危险。比如在操作字符串时,尽量使用CString类来实现,通过定义好的构造、析构函数来完成分配和回收,最好不要通过指针来动态操作。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。