Visual C++6.0 程序设计从入门到精通(四) - MFC类对象和资源之间的关系
2015-12-22 16:35
363 查看
1. MFC类对象和资源的介绍
MFC类对象指的是MFC中各种基类的对象,如CWnd,
CToolBar等;而资源指的是用户在客户端所看到的各种窗口界面,包括窗口,各种控件,文档等。
2. MFC和资源之间的关系
通常,程序不能直接操作用户所能看到的各种窗口、空间等资源,因此,为了达到可以控制资源的目的, MFC为资源建立了相关的类,并且要求用户在创建MFC类对象时,将具体的资源绑定到该资源对应的类对象中,这样用户想对资源进行操作时,只需通过操作类对象的成员函数API即可实现具体的目的。另外,程序中的资源文件含有一般MFC应用程序的默认菜单定义和加速键表、字符串表,还指定了默认的
About对话框和一个图标文件(
res\HelloMFC.ico)。
3. 为资源和类对象建立关系
要实现类对象和资源之间的关系,一般有两步:1)建立MFC类对象
用
new运算符创建一个C++对象,此时仅仅是创建了一个对象,但该对象对应的资源并未建立与绑定;
注意:
第一:此处,用
new的原因是一些对象是在函数体中创建的,具有函数体时间的声明周期,但函数体执行完成后,资源是会继续显示在界面中的,此时应该保证该资源对应的对象继续存在,因此使用
new在动态内存区保存对象,该对象的生命周期是和应用程序的生命周期一样长的。用户可以在类的析构函数中,动态的
delete类对象,来实现内存的回收。
第二:在类的函数体中建立的对象的指针应该是该类的成员变量或者是一个全局变量,因为,如果用一个局部变量来保存动态分配返回的对象指针,那么当函数体执行完成之后,用户便无法访问该对象的内存地址,会导致内存泄露。
示例:
//第一步:创建一个 C++对象,其中 CMainFrame 是从 CFrameWnd 派生的对象 CMainFrame* pMyFrame=new CMainFrame();//用 new 操作符创建窗口对象
2)建立资源窗口并与对应的类对象绑定
使用MFC类中的
Create()成员函数建立对应的界面资源(窗口、控件等),此时,界面的资源句柄会被保存到类的成员变量
m_Hwnd中,两者之间的关系便能够建立。建立完成之后,用户便可以通过
类对象->hWnd来访问界面资源。
示例:
//第二步: pMyFrame->Create(NULL,“My Frame Window”); //或者 m_wndToolBar.GetItemRect(1,&rect); edit.Create(WS_CHILD|WS_VISIBLE,rect,&m_wndToolBar,ID_EDIT); //建立一个工具条
注意:
① 界面资源与类对象之间的对应关系是通过资源句柄
hWnd完成的,即
hWnd是类对象和界面之间连接的纽带;
② 每一个界面资源在程序中均有一个资源宏来唯一的描述界面,宏不能重复,因此,也可以用资源id来找到界面,例如: 控件的查找一般是通过资源ID来进行的,消息映射也是通过ID进行的;窗口的查找一般是通过
hWnd进行的(所有继承于
Cwnd的类都继承了共有成员
Hwnd); 菜单、工具条可以通过
hwnd也可以通过ID,在具体类中重新定义的类成员,一般是通过自身的成员变量查找的。
不同的对象查找方法也不同。但是,主要的还是用资源句柄
Hwnd和资源ID(资源宏)进行。
③ 窗口类对象的函数中,构造函数用于创建类对象,此外还有一类初始化函数(包括
create()等),用于创建窗口资源并将界面句柄放置到
hWnd中供以后使用。
4. 总结
用户所熟知的窗口是资源句柄。 程序猿建立的是类对象,因此,建立两者之间的关系,需要在创建类对象之后,将窗口资源的句柄绑定到该对象上,以实现数据对象和视图对象的一一对应。相关文章推荐
- 《C++ Primer》真的适合入门吗?
- c++中关键字explicit用于类的构造函数
- 【c/c++】输入函数详解
- C语言常用知识点
- C语言实现单向链表的反转
- Visual C++6.0 程序设计从入门到精通(三) - MFC的消息机制
- C语言
- C语言总结
- 如何在C语言中实现可变参数
- C++学习笔记------浅析多态
- C++资源网站
- C++引用
- C++ string详解
- C语言指针和数组基础
- C++ find_if函数使用(STL_LIST)
- IL2CPP的前世今生
- IL2CPP的前世今生
- C语言printf函数格式化打印之长整型
- C语言中a[++i],a[i++]
- C++学习笔记-泛型算法