博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC 对象与Win32 SDK 句柄的映射关系
阅读量:6524 次
发布时间:2019-06-24

本文共 1062 字,大约阅读时间需要 3 分钟。

MFC相关技术说明: <可参阅MSDN MFC TNO 3>
Mapping of Windows Handles to Objects
MFC
对象与
Win32 SDK 
句柄的映射关系
说明: MFC使用C++对象封装Win32句柄(操作系统资源调度单元 HANDLE),所以在概念上一定要把MFC中的关于C++对象和WIN32句柄对象的概念区分开来,以下讨论就是MFC C++对象如何封装关联句柄
相关函数与技术:
1 FromHandle()
FromHandle(HANDLE handle);//MFC 类成员的静态方法
用于创建一个与句柄关联临时有效的MFC对象
ie:
CWnd *pWnd = CWnd::FromHandle(hwndObject);
注意这里创建的临时对象可能在离开它的作用域之后,就被删除掉
因为在CWinThread的默认的OnIdle()函数的处理中会调用
DeleteTempMap()
将这些
MFC
对象从
HANDLE
Detach
掉并释放堆内存
注意:这是MFC提供的一种内存回收机制
 
2 Attach()
创建一个持续有效 (permanent persistent)的MFC对象的方法
先创建一个 MFC对象再调用成员函数Attach(HANDLE);
这时候创建的对象是持续关联到 MFC对象的
注意此时如果销毁 MFC对象(如一个局部变量离开其作用域)时会默认的销毁句柄
如果这不是想要达到的效果的话在销毁 MFC对象的时候 先将MFC对象和句柄脱离
Detach()
 
3 MFC对象线程相关性
无论临时或持续化的 MFC对象都是线程相关的 所以无法获取另一个线程的这种与句柄关联的MFC对象,所以不同的线程之间如果想对同一句柄所指向的对象进行操作最好是传递句柄对象而不是这种关联的MFC对象
 
4 常见的句柄对象 (HANDLE OBJECT)与MFC 对象的映射关系
  • HWND (CWnd and CWnd-derived classes)
  • HDC (CDC and CDC-derived classes)
  • HMENU (CMenu)
  • HPEN (CGdiObject)
  • HBRUSH (CGdiObject)
  • HFONT (CGdiObject)
  • HBITMAP (CGdiObject)
  • HPALETTE (CGdiObject)
  • HRGN (CGdiObject)
  • HIMAGELIST (CImageList)
  • SOCKET (CSocket)

转载地址:http://wyjbo.baihongyu.com/

你可能感兴趣的文章
首届“欧亚杯”象翻棋全国团体邀请赛圆满收评!
查看>>
编译tomcat
查看>>
最简单 iText 的 PDF 生成方案(含中文解决方案)HTML 转为 PDF
查看>>
MySql中is NULL、ISNULL()和IFNULL()运行速度的比较
查看>>
关于unichar字符串的初始化
查看>>
oracle-xe手工创建数据库
查看>>
Cisco交换机 链路聚合
查看>>
我的友情链接
查看>>
好程序员HTML5大前端分享web前端面试题集锦二
查看>>
UG中卸载被占用的DLL
查看>>
eclipse 设置注释模板详解,与导入模板方法介绍总结
查看>>
Cocos2d-x3.2 文字显示
查看>>
估计下星期就能考科目二了
查看>>
20 Useful Commands for Linux Newbies
查看>>
轻松实现localStorage本地存储和本地数组存储
查看>>
mongodb group
查看>>
python+selenium自动化测试(二)
查看>>
(笔记 - 纯手敲)Spring的IOC和AOP 含GIT地址
查看>>
7-设计模式介绍
查看>>
让运维更高效:关于ECS系统事件
查看>>