第4章MFC基于对话框编程
- 格式:ppt
- 大小:168.00 KB
- 文档页数:17
MFC全称Microsoft Foundation Classes,也就是微软基础类库。
它是VC++的核心,是C++与Windows API的结合,很彻底的用C++封装了Windows SDK(Software Development Kit,软件开发工具包)中的结构和功能,还提供了一个应用程序框架,此应用程序框架为软件开发者完成了一些例行化的工作,比如各种窗口、工具栏、菜单的生成和管理等,不需要开发者再去解决那些很复杂很乏味的难题,比如每个窗口都要使用Windows API注册、生成与管理。
这样就大大减少了软件开发者的工作量,提高了开发效率。
基于对话框的MFC编程
1,对话框的添加,子对话框的添加,非模态对话框的创建和模态对话框的创建。
模态与非模态的区别就在于,模态对话框是必
须处理完对话框里面的事件才能进行别的事件的处理,而非模
态对话框则可以同时进行。
2,与下位机的通信用了COM控件,对信号进行接收和发送
3,画图用teechart控件比较好一点,比图片控件好很多
4,加入菜单栏
5,加入工具栏,一般来说都是把按钮结合到工具栏中,不要单独一个一个的按钮
6,定时器有的也比较多,因为数据的实时显示都是需要用到定时器才能实现。
如果是.net的朋友则在菜单上选择新建・>项目,在项目类型中选择Visual C++项目,在模板中选择MFC应用程序,在名称中输入Dialog,按确定。
在应用程序类型中选择基于对话框,后按完成。
「是一个基「对话框程序就做好了。
第一次使用MFC的朋友,一定会为之喳舌.自己从零开始编程许久了,也许还不习惯别人为咱们生成代码吧.“第一映象就是乱”,这就是我的同学给我的回答。
没关系,我们可以一点一点来看和理解VC给我们生成的代码。
毕竟,它为我们节省了很多时间来打WindowSDK框架代码。
请打开类视图(ClassView),如果无误的话,我们可以看到三个类。
分别是CAboutDIg, CDialogApp, CDialogDIg 这三个类。
其中,CDialogApp是最重要的一个类。
双击CDialogApp,打开其定义体。
我们会看到它是这么定义的:1.class CDialogApp : public CWinApp我们可以看到这个类是派生于CWinApp的.在MFC编程中,这种情况很多见,继承类库类来添加自己需要的功能,然后再去使用。
在MFC应用程序中,CWinApp就是这样使用的。
查一查类库关于CWinApp的描述,是这样的;MFC中的主应用程序类」寸装用于Windows操作系统的应用程序的初始化、运行和终止。
基于框架生成的应用程序必须有且仅有一个从CWinApp派生的类的对象。
在创建窗FI之前先构造该对象.CWinApp是从CWinThread派生的,后者表示可能共布•一个或多个线程的应用程序的上执行线程。
任最新版木的MFC中,Initlnstance、Run、Exitinstance和Onldle成员函数实际位于CWinThread类中。
此处将这些函数作为CWinApp成员来探讨,因为探讨所关心的是X寸象作为应用程序对象而不是主线程的角色。
与用于Windows 操作系统的任何程序一样,框架应用程序也具有WinMain函数。
MFC编程_基于对话框的Windows应用程序第1章基于对话框的Windows应用程序1. 简介Windows编程的两种方法,即Windows API编程和MFC 编程。
2. 基于对话框的应用程序的创建过程:建立基于对话框的 MFC 应用程序框架;放置控件;设置控件属性;为控件连接变量,即为控件命名;添加并且编写消息处理函数。
3. 常用基本控件静态文本框:主要用来显示文本信息,不能接受用户输入命令按钮:是最常见的、应用最广泛的一种控件。
在程序执行期间,当单击某个命令按钮后就会执行相应的消息处理函数。
编辑框:是一个文本编辑区域,用户可以在该区域输入、编辑和显示正文内容。
框架:将一组相关的控件框起来,达到标识一组控件的作用。
单选按钮:用户在一组单选按钮中最多只能选择一项。
当某一项被选定后,其他选项自动变成未选状态。
复选框:列出了可供选择的项,用户可根据需要选择其中的一项或多项,各选项之间的状态互不相关。
列表框:通过显示多个选项,供用户选择,达到与用户对话的目的。
组合框:组合了编辑框和列表框的特性而形成的一种控件。
在列表框中列出可供用户选择的项,当用户选定某项后,该项内容自动装入编辑框中。
滚动条:通常附在对话框上用来协助观察数据或确定位置,也可以用来作为数据输入的工具。
1.1 Windows编程基础Windows 应用程序的主要特点是:具有标准的图形用户界面。
具有与硬件无关的特性。
采用“消息传递,事件驱动”的运行机制。
用 Visual C++ 编写 Windows 应用程序主要有两种方法:一是使用Windows 提供的应用程序接口(Application Programming Interface ,API )函数;二是使用Microsoft 提供的微软基础类( Microsoft Foundation Class , MFC )。
1.1.1 Windows API编程从本质上来说, API 是Windows 系统支持的函数定义、参数定义和消息格式的集合,共有上千个标准的API 函数可供应用程序调用。
实例001 如何创建基于对话框的MFC工程《Visual C++开发实战1200例(第I卷)》本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Visual C++进行程序开发各个方面的知识和技巧,主要包括编程基础、界面设计、应用程序控制和图形图像。
本节为大家介绍实例001 如何创建基于对话框的MFC工程。
AD:第1章开发环境工程创建开发环境设置与使用程序调试1.1 工程创建实例001 如何创建基于对话框的MFC工程要使用Visual C++开发软件,首先要创建一个工程,而基于对话框的MFC工程则是用户广泛使用的工程。
图1.1将是一个新创建的基于对话框的MFC工程。
本实例将介绍如何创建基于对话框的MFC工程。
(New窗口的Projects选项卡中选择MFC AppWizard[exe](MFC应用程序向导)选项,在Project name文本框中输入创建的工程名"Hello",在Location文本(2)单击OK按钮,弹出MFC AppWizard-Step 1窗口,如图1.3所示。
在MFC AppWizard-Step1窗口中可以指定生成框架的类型。
Single document:生成单文档应用程序框架。
Multiple documents:生成多文档应用程序框架。
Dialog based:生成基于对话框的应用程序框架。
Document/View architecture support:选中该复选框,允许生成文档/视图和非文档/视图结构程序。
(3)本实例选中Dialog based单选按钮,创建一个生成基于对话框的应用程序。
单击Next按钮,弹出MFC AppWizard-Step 2 of 4窗口,如图1.4所示。
MFC AppWizard-Step 2 of 4窗口中的主要选项介绍如下。
About box:生成"关于"对话框。
MFC 对话框编程 -- 总结一、创建对话框对象1.首先利用资源编辑器创建对话框资源,并针对该对话框资源定义一个对话框类:class CTestDlg : public CDialog2.创建话话框对象模态对话框的创建:如:CTestDlg dlg;dlg.DoModal();非模态对话框创建:如:CTestDlg dlg;dlg.Create(IDD_DIALOG, this);但这样是得不到一个正常显示的非模态对话框的。
因为模态与非模态对话框的实现方式并不相同,这里我们还要注意几点。
非模态对话框创建完成后是隐藏着的,必须调用ShowWindow来进行显示。
对于模态对话框,当执行到DoModal 函数以创建对话框时,程序会暂停执行,直至模态对话框关闭。
所以创建模态对话框可以采用局部对象。
但是,对于非模态对话框,当执行Create函数时并不会暂停执行,当执行到大括号"}后Dlg局部对象被销毁生命周期结束,于是异常出现了。
解决方法有两个:一、在View类中定义一个CTestDlg 成员变量。
二、动态创建一个CTestDlg 变量,并重写CTestDlg 类的 PostNcDestroy函数,在该函数里销毁对象 delete this;无论创建的是模态对话框,还是非模态对话框,当我们单击确定或取消按钮后对话框都会消失。
但这时低层的操作却是不同的。
对于模态对话框,此时对话框对象的确是被销毁了,但对于非模态对话框,这时只是隐藏起来不再显示。
这需要我们自己调用DestoryWindow函数来进行销毁工作。
这时我们必须重写 CTestDlg 的 OnOK 、 OnCancel 两个函数(这两个是基类CDialog的虚函数),在这两个函数内调用DestroyWindow函数,并注意不再调用基类CDialog相应的函数。
正确地创建非模态对话框的代码如下:CTestDlg *pDlg = new CTestDlg;pDlg->Create(IDD_DIALOG, this);pDlg->ShowWindow(SW_SHOW);同时,在CTestDlg 类的 PostNcDestroy函数中销毁对象:delete this;二、动态创建按钮1. 在对话框类CTestDlg 中定义一个 CButton 类对象,作为其成员变量。
VS2010实验基于对话框的MFC程序实现功能:单击文本编辑框,可输入字符串;单击擦除,可清除文本框内容;单击大写,将文本全部变为大写;单击小写,将文本全部变为小写; 单击退出,关闭程序。
1.启动VS2010,选文件,新建,项目。
选择MFC应用程序,输入名称:example,确定。
点下一步,选基于对话框,去掉使用unicode字符集,完成:之后,出口中出现这个样子:直接点编译运行,会出现一个对话框,点确定,关闭这个对话框:2.单击左侧的‚资源视图resource view‛,dialog下面的IDD_EXAMPLE_DIALOG,代码编辑框中出现EXAMPLE_DIALOG将对话框中的‚取消‛和‚TODO:再此放置对话框控件‛选中后,按del直接删掉。
并从右下角工具箱中拖入如下圈出的四样东西。
对话框的大小,即控件的位置都由鼠标调整。
2.修改static控件的文字,单击它,然后直接输入就可以。
注意左下角属性中,它的ID,是IDC_STATIC。
对话框的ID都是‚IDC_‛开头的,而基于菜单的都是‚ID_‛开头的。
3.选中文本编辑框,将它的ID改为IDC_CONTROL_EDIT.4.单选按钮,先将旁边的文字‘Radio1’改为‘大写’,第二个改为‘小写’。
再将他们的ID,第一个改为IDC_UPPER_RADIO,第二个改为IDC_LOWER_RADIO。
将button1改为擦除,ID改为‚IDC_ERASE_BUTTON‛确定改为退出,IDC_EXIT_BUTTON。
至此,完成界面设计工作,下面添加消息处理函数。
5.单击项目,类向导,打开MFC class wizard类名为CexampleDlg,点成员变量选项卡,选中IDC_CONTROL_EDIT,点右侧的添加成员变量,成员变量名及类别如下图所示,完成后单击确定。
出现一个成员变量:回到命令选项卡,在对象ID中选择IDC_EXIT_BUTTON,在消息中选择BN_CLICKED,单击右侧‚添加处理程序‛。
基于MFC的对话框程序一、利用AppWizard应用程序向导生成程序框架新建项目,选择“MFC”模板中的“MFC 应用程序”,给项目一个名称,如Figure 1所示。
Figure 1 新建项目在“MFC应用程序向导”的“应用程序类型”中选择“基于对话框”;在“用户界面功能”中勾选“最小化框”与“最大化框”复选框。
其他,默认。
最后点击完成。
如Figure 2,Figure 3所示。
Figure 2Figure 3在Figure 3中,可在“对话框标题”中更改对话框的标题。
此处采用默认的MyDlg。
生成的初始项目,如Figure 4所示。
Figure 4经常用到的菜单、视图等在Figure 4中用红框已标出。
接着删掉Figure 4中的“确定”与“取消”按钮,在图中已用绿框框出。
然后选中Figure 4中的“TODO:在此放置对话框控件”,右键,选择属性。
在弹出的对话框中找到Caption,将其值改为姓名和学号,同时将该对话框控件移动至顶端,见Figure 5。
Figure 5二、添加控件与相关程序如果当前工作处于设计对话框时,“工具箱”窗口就会给出各种VC++提供的常用控件。
如果找不到“工具箱”,可在“视图”菜单中选择“工具箱”。
(其他视图找不到时,也可按这种方式调出。
)“视图”菜单及“工具箱”窗口,在Figure 4中顶端和右端的红框中可见。
如果选择“工具箱”后,看不到任何控件,请看看程序是否处于调试状态;如果处于调试状态,请退出调试状态再试试。
1、添加按钮控件选择“资源视图”,双击“IDD_MYDLG_DIALOG”,再选择“工具箱”,找到“Button”控件,拖至对话框“MyDlg”的合适位置,如Figure 6所示。
“资源视图”可在“视图”菜单中调出,也可在Figure 4中低端红框标出的位置找到。
Figure 6更改Button1的按钮标题为“按钮”。
在Button1的“属性”对话框中设置“Caption”的值为“按钮”。