MFC框架界面开发(一):视图和框架

来源:互联网 发布:如何做一名数据分析师 编辑:程序博客网 时间:2024/05/17 00:14

从图书馆借来的这本《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:专用于视图类的初始化。

原创粉丝点击