窗口句柄、窗口类对象以及窗…
2014-01-22 00:27
288 查看
原文地址:窗口句柄、窗口类对象以及窗口之间的关系作者:AIR的技术档案馆 窗口句柄,提供了窗口的一个标识,类似于指针的概念,每一个窗口都对应了一个窗口句柄作为其标识,通过句柄可以方便的从内存中索引到资源。窗口类的对象则是对应窗口类的一个实例化,在MFC程序中,通过子类对象访问类的函数时就不需要提供窗口句柄作为资源标识。
举例说明:
SDK编程中创建一个窗口首先要定义一个窗口句柄,然后调用API函数创建并显示窗口,此时需要向函数传递窗口句柄,具体如下:
HWND hwnd;
hwnd=::CreateWindowEx();
::ShowWindow(hwnd,SW_SHOW);
::UpdateWindow(hwnd);
利用MFC开发程序时,在CWnd类中定义了一个类型为句柄的成员变量HWND m_hWnd, 类中有函数
举例说明:
SDK编程中创建一个窗口首先要定义一个窗口句柄,然后调用API函数创建并显示窗口,此时需要向函数传递窗口句柄,具体如下:
HWND hwnd;
hwnd=::CreateWindowEx();
::ShowWindow(hwnd,SW_SHOW);
::UpdateWindow(hwnd);
利用MFC开发程序时,在CWnd类中定义了一个类型为句柄的成员变量HWND m_hWnd, 类中有函数
HWND CreateWindowEx( DWORD dwExStyle, // extended window style LPCTSTR lpClassName, // registered class name LPCTSTR lpWindowName, // window name DWORD dwStyle, // window style int x, // horizontal position of window int y, // vertical position of window int nWidth, // window width int nHeight, // window height HWND hWndParent, // handle to parent or owner window HMENU hMenu, // menu handle or child identifier HINSTANCE hInstance, // handle to application instance LPVOID lpParam // window-creation data );
利用MFC开发程序时,在CWnd类中定义了一个类型为句柄的成员变量HWND m_hWnd, 类中有函数其返回值为一个句柄,在函数体内部利用API函数CreateWindowEx来完成窗口的创建。将其返回值保存到m_hWnd中,在实例化一个对象CWnd wnd;wnd.CreatEx(...);wnd.ShowWindow(SW_SHOW);wnd.UpdateWindow();可见利用对象创建窗口不需要向函数传递窗口句柄资源。因为在CWnd中定义了一个成员变量m_hWnd,由它保存了这个窗口句柄,调用CreateWindowEx时把句柄保存到CWnd类中,所以再次调用ShowWindow中就不用传递句柄。 这里需要声明一点此处的wnd对象并不是窗口,将窗口关闭的时候这个对象并没有销毁,仅仅是将句柄设置为NULL,对象和窗口生存周期之间没有必然联系,对象和窗口唯一联系的纽带是在类的内部有一个窗口句柄的成员变量,保存了相关窗口的句柄,所以当对象销毁的时候这个窗口是要销毁的。一般的说在执行到右大括号之前对象都是没有被销毁的,而此时若调用DestroyWindow则是销毁窗口
相关文章推荐
- No valid Qt version set S…
- Smartfoxserver 基础入门(…
- SmartFoxServer学习总结(转…
- Linux下Crond计划任务设置格式
- 一道常考fork题挖掘
- zookeeper安装--1. 下载源文件
- Cocos2d-x 3.0beta New Label新特性—描边,阴影,发光
- Hbase安装--错误2: Class path contains multiple SLF4J bindings
- 黑马程序员_java基础笔记(06)...集合
- Hbase 安装--错误1:Unknown out of band call #-2147483647
- hdu 1003 java
- [置顶] AChartEngine整体设计类组织方式
- 在keychain tool里,Request a certificate时,出错''The specified item could not be found in the keychain"
- visual studio 之 mysql 的配置及使用举例
- java方法的重写和重载
- HDU 4217 Data Structure?(树状数组求前k大)
- SDL游戏之路(十八)--文本输入框
- Triangular Sums
- hanoi
- redis实现有序的消息队列