CWnd与Hwnd的区别
来源:互联网 发布:济南seo招聘 编辑:程序博客网 时间:2024/05/21 11:01
问题:今天在学长的程序里面看到:
CWnd* wnd=GetDlgItem(IDC_STATIC2);
//在picture控件上OpenGL视场。
HWND hWnd=wnd->GetSafeHwnd();
hdc=::GetDC(hWnd);
InitOpenGL(hdc); 于是就想起来还一直不知道CWnd与Hwnd的区别,就上网查了查。
解答:
CWnd是窗体类,而hWnd是窗体句柄,是个整型数.
HWND是SDK定义的类型,是一个无确切意义的32-bit值,在调用API时用于指代窗体。
Wnd*是一个有确切意义的指针,指向一个MFC窗体类CWnd的实例。因为MFC对SDK做了封装,大部分调用都可以用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。
- CWnd与Hwnd的区别
- CWnd与HWND的区别
- CWnd与HWND的区别
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- CWnd与HWND的区别与转换
- Open Source Camp北京活动随记
- 如何加载通用语言运行时?
- 如何由XSD自动生成XML和实体类
- 启动Internet信息服务的默认网站老是提示错误
- 有功夫熊猫想到的
- CWnd与Hwnd的区别
- BSD net源码分析(2-4)
- [推荐]郭克华J2ME移动开发实战视频教学
- 由华为面试而想到的一个知识点---virtual虚函数
- 求助!沃尔沃S40 2.4i智雅限量版这款车怎么样,能不能买?
- m_pDC->GetSafeHdc()的思考
- 优秀的工作流引擎的特点!
- 发版前阶段
- 面试题