从图书馆借来的这本《VC++就业培训宝典之MFC视频教程》已经在我的桌子上躺了一个多月了,还没有看完,只是学起来总有点心不在焉。
我的方法通常是:先把书上的每一章内容大致过一遍,心中有个思路,然后再动手在VS上对着书本敲代码。但是总是遇到各种问题,有的时候是我自己把哪里打错了,有时候是版本不一样造成的问题,最为蛋疼的情况是代码是对的,可是运行起来却叼反应没有,也没有报错,就是不显示界面。
除此之外,我感到我这样急急地学,虽然是把代码都敲了一遍,但是并不踏实。有些数据类型和函数参数的含义弄不懂,我也没有去查一下,自己也没有在使用中巩固。开始还打算认认真真地把每章后的实践题都做一遍的,后来看到太多了,就没有去管它了。
这本书的内容还是很多的,要想真正的理解掌握,离不开总结和实践。为了不至于学了一遍就忘了,我将从这里开始好好地总结一下笔记。
介绍
MFC程序分为基于对话框的程序和基于框架界面的程序。框架界面按照文档的模式划分为两类:SDI和MDI。
- SDI:只能打开一个文档,如windows的记事本,画图软件等;
- MDI:可以同时打开多个文档,如photoshop,VS等软件。一般通过标签控件来管理多文档。
简单的框架程序由框架类(CFrameWnd/CMDIFrameWnd)和视图类(CView或CXxView)组成。(文档类在下一章介绍)
实例
手动创建一个SDI程序
1.新建一个单文档程序项目,在程序向导中取消“文档/视图框架支持”;
2.创建一个新的视图类:(以列表视图类为基类)
class CMyView:public CListView
3.在主框架类CMainFrame中用新的类CMyView替换默认的CChildView:
头文件中:注释掉CChildView,定义新类的对象
OnCreate:注释掉CChildView相关代码
OnSetFocus和OnCmdMsg函数中:用新类的对象替换CChildView类对象
修改OnCreateClient函数:
c++
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
CCreateContext cc;
cc.m_pNewViewClass=RUNTIME_CLASS(CMyView);
m_pMyView=(CMainView*)CreateView(&cc);
return m_pMyView!=NULL;
}
4.为CMyView添加初始化虚函数OnInitialUpdate()和其他的消息映射函数。
5.实现效果:
这里用到的几个函数:
(1)OnCreate:主要用于框架类的界面初始化,如工具栏,视图等子窗口界面的创建等。
(2)OnCreateClient:用于创建视图类等客户区子窗口。
(3)OnInitialUpdate:专用于视图类的初始化。