一.编写Windows程序的方法:
(1)利用Win32应用程序接口提供的函数,用标准的c或c++编写应用程序。
(2)利用MFC提供的类作为基类,采用面对对象的的程序设计方法,用c++语言编写。 (3)即利用MFC又利用MFC AppWizard[exe]向导生成基本的MFC应用程序框架,然后按照MFc机制和原理向应用程序添加具体的应用代码。 资源:
窗体,对话框,控件和菜 编写MFC的一般步骤:
(1)根据应用程序的特性和外观界面要求在建立程序时勾选对应的选项,创建一个框架。 (2)利用资源编辑器为程序编辑或添加资源,如编辑菜单,添加对话框等。 (3)利用ClassWizard类向导或手工添加类、成员变量和成员函数 (4)根据程序功能要求编写具体的函数代码 (5)编译、链接程序 (6)测试程序的各项功能 vc++类程序由头文件和源文件支撑。
头文件包括指明派生类、声明成员变量、和成员函数。 源文件主要定义成员函数的实现代码和消息映射。
二.应用程序函数介绍 CAboutDlg 对话框类 CMainFrame 主框架类 CView CDoc
视图类 文档类
CApp 应用程序类
1.框架窗口类头文件
MainFram.h CMainFrame类是CFrameWnd类的派生类, 主要负责标题栏,菜单栏,工具栏和状态栏。
声明了工具栏m_wndToolBar、状态栏m_wndStatusBar两个成员变量。 四个函数:
(1)AssertValid() 主要用于诊断对戏那个是否有效 (2)Dump() 输出对象的状态消息
主要用于调试的
(3)OnCreate() 主要用于创建工具栏m_wndToolBar和状态栏m_wndStatusBar 通过调用OnCreateClient()函数创建的。
(4)PreCreateWindow();虚函数,创建一个非默认风格的窗口,可以重载该函数,在函数中通过修改CREATESTRUCT结构参数cs来改变窗口类,窗口风格,窗口的大小和位置。
2.文档类头文件
_Doc.h,该头文件用于定义文档类C_Doc
主要负责程序数据的保存和装载,实现文档的序列化功能。
(1)Serialize() 负责文档数据的磁盘读写操作 (2)OnNewDocument() 完成新建文档的的工作
在单文档程序SDI中只处理一个文档对象,执行New命令时文档对象已经生成,因此其构造函数不会再被调用,所以SDI程序不要在构造函数中对我文档进行初始化,因在NewDocument()函数中。
(3)AssertValid() 主要用于诊断对戏那个是否有效 (4)Dump() 输出对象的状态消息
主要用于调试的
3.视图类头文件
_View.h,用于定义视图类C_View。
主要用于处理客户区窗口,是框架窗口的子窗口主要负责客户区文档数据的显示以及如何进行人机交互。
(1)AssertValid()
(2):Dump() 前两个函数同上
(3)GetDocument() 获取当前文档的对象的指针m_pDocument。作为发行版时为内联函数。
(4):OnBeginPrinting() (5)OnDraw() (6)OnEndPrinting (7)PreCreateWindow
是一个虚函数,负责文档对象的数据在用户视图区的显示输出。
4.应用程序类头文件
_.h,定义应用程序类C_App。也有CAboutDlg对话框和它实现的代码。 主要负责完成应用程序的初始化,程序的启动和程序运行时的清理工作。
(1)ExitInstance() (2)InitInstance() (3)OnAppAbout()
5.资源头文件
Resourde.h,主要定义项目中所有的资源标识符,给资源ID分配一个整数值。 标识符前缀:
IDR 主菜单,工具栏,应用程序图标和快捷键表 IDD 对话框 IDC 控件和光标 IDS 字符串
IDP 信息对话框的的字符串 ID 菜单命令项
6.标准包含头文件
用户一般不要轻易修改文件中灰色字体显示的代码,这些代码有类向导管理。
三.MFC介绍
WinMain()主函数是Windows应用程序的入口点。每个基于MFC的应用程序都有一个CWinApp了派生的对象,它就是_.cpp中定义的全局的C_App类对象theApp。
当启动应用程序时,WinMain()函数调用InitInstance()函数。这个函数主要完成以下几个功能:
(1)注册应用程序。MFC应用程序利用注册表存储所有的启动信息,这些信息保存在某个.ini文件中。通过调用SetRegistryKey()函数完成于注册表的链接。调用函数
LoadStdprofileSetting(),以便从.ini文件中装载标准文件选项或Windows注册信息。
(2)创建并注册文档模版。通过CDocTemplate()将框架窗口对象、文档对象及视图对象联系起来。文档模版创建后,调用CWinApp的成员函数AddDocTemplate来注册文档模版对象。
(3)处理命令行参数。
(4)调用窗口类的成员函数ShowWindow()和UpdateWindow()显示和刷新创建的框架窗口。
初始化完成后,WinMain()函数调用CWinApp的成员函数Run()来处理消息循环。运行结束时,成员函数Run()将调用ExitInstance()来做最后的清理工作。 一个特点是资源和代码的分离。
在资源文件中只定义了菜单脚本和字符串等内容,没有定义位图和图标等资源,但保存了他们所在的文件名和路径。位图和图标等图形资源保存在单独的文件中。
1.资源文件
.rc 生成的脚本文件 .rc2 不能编辑的资源 2.图标文件
ico 作为应用程序的图形显示。可以用图像编辑器修改应用程序的图标。 3.文档图标文件
文档图标一般用于多文档应用程序中 文档图标资源ID为IDR_MYSDITYPE。 4.工具栏按钮为徒文件
Toolbar.bmp。可用工具栏编辑器对按钮位图进行编辑。
四.应用程序向导生成的其他文件
1.项目文件DSP
项目作为程序设计的基本单元,用于管理组成应用程序的所有元素。 2.工作区文件DSW 3.类向导文件CLW 4.项目自诉文件 类向导:
根据程序猿的要求半自动化的方式添加程序代码。 主要用到Message Maps和Member Variables页面。
V标记的文虚函数,W标记的表示该函数是窗口消息处理函数。
单击了删除按钮只是在头文件很萎源文件中消除了消息映射,实际的代码必须自己手工删除。否则编译会出错。
可以向项目添加新类:但只能添加MFC类的派生类。 Automation栏用于选择是否使用基类的自动化服务。 如果添加的不是派生类,要在主菜单中添加。
例题:编写程序在视图窗口画一个矩形,并编写鼠标消息响应函数。要求:在矩形内单击鼠标左键时,显示“击中矩形”信息;在矩形外单机鼠标时,把矩形移动到鼠标单击的位置。