MFC 句柄Hwnd 与 窗口Wnd的联系
2015-09-14 09:22
176 查看
CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。
由HWnd得到CWnd*:
CWnd wnd;
HWnd hWnd;
wnd.Attach(hWnd);
通常一个窗口资源已经和一个CWnd类的对象关联起来的,由于一般来说这个类是自己创建的,所以自然知道怎么得到指向这个类的指针。如果没有就创建一个CWnd对象,将这个对象与窗口资源的hWnd句柄关联起来。(如上边的语句)。如果用
static CWnd* CWnd::FromHandle(HWND hWnd) ;
则返回值是一个暂时的CWnd对象,并且我们确保返回值为非空,也就是hWnd是有效的。
static CWnd* CWnd::FromHandlePermanent(HWND hWnd) ;
返回的是一个永久的对象。只有在返回的CWnd在类表里已经存在是返回值为非空。
由CWnd获取HWnd就容易多了,因为它的一个成员m_hWnd就是所对应窗口的句柄。
wnd->m_hWnd。
由HWnd得到CWnd*:
CWnd wnd;
HWnd hWnd;
wnd.Attach(hWnd);
通常一个窗口资源已经和一个CWnd类的对象关联起来的,由于一般来说这个类是自己创建的,所以自然知道怎么得到指向这个类的指针。如果没有就创建一个CWnd对象,将这个对象与窗口资源的hWnd句柄关联起来。(如上边的语句)。如果用
static CWnd* CWnd::FromHandle(HWND hWnd) ;
则返回值是一个暂时的CWnd对象,并且我们确保返回值为非空,也就是hWnd是有效的。
static CWnd* CWnd::FromHandlePermanent(HWND hWnd) ;
返回的是一个永久的对象。只有在返回的CWnd在类表里已经存在是返回值为非空。
由CWnd获取HWnd就容易多了,因为它的一个成员m_hWnd就是所对应窗口的句柄。
wnd->m_hWnd。
相关文章推荐
- Android TagFlowLayout完全解析 一款针对Tag的布局
- 大作业 XXX大学 课程管理系统
- 解决Ueditor 不兼容IE7 和IE8
- Android TagFlowLayout完全解析 一款针对Tag的布局
- ArcGIS10现在也可以做城市地质三维了
- 正向反向传值
- STL源码剖析 [容器](二十)[stl_hash_set.h]
- Ajax
- 10款web前端基于html5/CSS3应用特效
- 安装oracle 12c 用Navicat for oracle连接数据库cannot load OCI DLL,193 笔记
- Gearman安装
- 显示隐藏,页面搜索,操作DOM
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌CSS:将CSS封装到程序集中
- iOS -AppIcon,LanuchImage总结
- mysql设置UTF8
- Debian Linux安装Android ABD工具
- Unity3D游戏开发之RPG游戏剧情呈现策略
- 字符串周期的问题
- unity3d NGUI入门(描述和使用插件参数)
- js随机生成字母数字组合的字符串 随机动画数字