第4章MFC基于对话框编程

合集下载

MFC编程

MFC编程

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,定时器有的也比较多,因为数据的实时显示都是需要用到定时器才能实现。

mfc对话框编程

mfc对话框编程

Ok按钮的消息处理函数
如果在编辑框上按回车键,对话框就关闭了。原因
是OK按钮是缺省按钮。作为缺省按钮,当你在对话 框上按了回车键后,就由你的缺省按钮的处理函数 来进行响应。在基类的OnOk函数中,关闭对话框。
WM_INITDIALOG
WM_INITDIALOG消息,是在对话框创建完成以及
它上面的控件创建完成,在显示之前发送的消 息。我们可以捕获这个消息。在这个消息处理
• 创建对话框窗口 :分有模式对话框的创建(DoModal)和 非模式对话框的创建(Create)
对话框的种类
•有模式对话框
用于交换一些重要信息,强制用户完成所要求的动作
有模式对话框在打开状态时,禁止用户在应用的其它 地方进行工作,但多数允许用户切换到其他的应用程 序中。
•无模式对话框
不禁止父窗口,它允许用户不需要关闭该无模式对话 框,就可返回到另一任务。Find对话框就是一例
对话框控件访问七种方式
• GetDlgItem()->Get(Set)WindowText( )
• GetDlgItemText()/SetDlgItemText( ) • GetDlgItemInt()/SetDlgItemInt( ) • 将控件和数值型变量相关联 • 将控件和控件变量相关联 要用到UpdataData函数,这个函数的作用是用来初始化数据
逃跑按钮的其他实现方法
可以只创建一个按钮,将这个按钮关联我们新创建 的类,然后跟踪鼠标移动消息,通过SetWindowPos
或MoveWindow函数来移动按钮实现。
GetClientRect(&rect)是得到窗口客户区域的大小,左上角坐标永远是 (0,0),右下角坐标是窗口的宽度和高度。 GetWindowRect(&rect)是得到整个窗口的大小和位置,左上角坐标和 右下角坐标,是相对于屏幕左上角来说的。 MoveWindow或 SetWindowPos中的 x,y坐标,对于对话 框来说,是相对于屏 幕左上角的,对于对 话框上的控件来说, 是相对于对话框的客 户区的左上角来说的

MFC基于对话框程序

MFC基于对话框程序

如果是.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函数。

第4章 MFC框架、消息和对话框

第4章 MFC框架、消息和对话框

3)输入上面的代码。选择“工程”→“设置”命令,在出现的对话框中选 择“常规”标签。在“Microsoft基础类”(Microsoft Foundation Classes)组合 框中,选择“使用MFC作为共享的DLL”(Use MFC in a Shared DLL),如图 4-5所示。单击 按钮。
在Visual C++ 6.0创建和运行上述程序的步骤与【例Ex_HelloMsg】相同。程 序运行后,单击鼠标左键,就会弹出一个对话框,结果如图4-4所示。
1. 消息驱动机制 前面已经看到,Windows应用程序和C++控制台应用程序之间的一个最根本 区别就在于,C++控制台应用程序是通过调用系统函数来获得用户输入的, Windows应用程序则是通过系统发送的消息来处理用户输入。例如,对鼠标消息 WM_LBUTTONDOWN的处理。 2. 图形设备接口 在传统的DOS环境中,想要在屏幕或打印机上显示或打印一幅图形是非常复 杂的,因为用户必须按照屏幕分辨率模式以及专用绘图函数在屏幕上绘图,或根 据打印机类型及指令规则向打印机输送数据。Windows提供了一个抽象的接口, 称为图形设备接口(Graphical Device Interface,GDI),这使得用户直接利用 系统的GDI函数就能方便实现图形和文本的输出,而不必关心与系统相连的外部 设备的类型。
5)输入上面的代码,运行程序,结果如图4-3所示。
从上面的程序代码可以看出:
1)C++控制台应用程序以main函数作为进入程序的初始入口点,但在
Windows应用程序中,main主函数被WinMain函数取代。WinMain函数的原型如
下。
int WINAPI WinMain ( HINSTANCE hInstance, // 当前实例句柄 HINSTANCE hPrevInstance, // 前一实例句柄 LPSTR lpCmdLine, // 指向命令行参数的指针 int nCmdShow) // 窗口的显示状态

MFC编程_基于对话框的Windows应用程序

MFC编程_基于对话框的Windows应用程序

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 函数可供应用程序调用。

创建基于对话框的MFC工程(详细图示)

创建基于对话框的MFC工程(详细图示)

实例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:生成"关于"对话框。

对话框编程(修改版)

对话框编程(修改版)

Example:
CNonMdlDlg * m_pNameDlg;
bool m_bActive; m_pNameDlg = new CNonMdlDlg; ……
m_bActive = TRUE;
CDialog::Create(CNonMdlDlg::IDD); …… m_bActive = FALSE; DestroyWindow(); …… m_pNameDlg->SetActiveWindow(); …… delete m_pNameDlg;
4.2.3 属性页对话框 属性表的功能都被封装在一对MFC类中: CPropertySheet和CPropertyPage。 CPropertySheet代表属性表自身,是从CWnd 派生而来。 CPropertyPage代表属性表的页, 是从CDialog派生而来。
创建属性表的步骤
1、针对属性表的每一页创建一个对话框模板,定义页的 内容和特性。将对话框标题设成你希望在属性表页上方标 签中显现的标题。 2、针对属性表的每一页由CPropertyPage派生出一个类 似对话框的类。 3、由CPropertySheet定义一个属性表对象。将属性表 类和第二步中得到的属性表页类实例化。在构造函数中利 用CPropertySheet::AddPage将各页按期望中的显示顺 序添加到属性表中。 4、调用属性表的DoModal函数将属性表显示在屏幕上 (也可以像对话框那样建立无模式的属性表)。
4.2.1 模态对话框(Modal Dialog Box)
Example: CMyDialog dlg; dlg.DoModal();
垄断消息
OK按钮消息
载入对话框模板
OnInitDialog()

基于MFC的对话框程序

基于MFC的对话框程序

管理器”、“类视图”、“属性管理器”和“资源视图”等。如图 9。
图 9 资源管理器等 图 8 窗口的中间区域为客户区,用于修改编辑窗口等资源、编写修改源
代码。 如果当前工作处于设计对话框(Dialog)时,浮动窗口“工具箱”中会出
现 VC++提供的各种常用“控件”,如图 10 所示。图 8 的最右侧是”属性”窗口, 负责显示所有控件等资源的静态属性,比如控件的标题、类型等,可根据需要对 各种属性进行修改。如图 11
MyDlgDlg.cpp文件。
图 15 事件处理程序向导 可以看到,在程序最后向导自动添加了如下函数: void CMyDlgDlg::OnBnClickedButton1() {
// TODO: 在此添加控件通知处理程序代码 } 根据任务要求,在该函数中添加需要的代码,该函数修改为: void CMyDlgDlg::OnBnClickedButton1() {
UpdateData(); // 使得Slider当前位置值进入到变量 m_nSliderH 中 CString str; // 定义字符串对象 str.Format(_T("Slider位置:%d"),m_nSliderH); // 将m_nSliderH转换为字符串 m_strShowText = str; UpdateData(FALSE); // 更新显示编辑框内容
4. 添加静态文本变量:鼠标右键单击对话框上的静态文本,跳出浮动菜单, 如图13. 单击”添加变量”, 弹出“添加成员变量向导“窗口如图14. “类别”选择 “Value”,“变量类型”选择“CString”,变量名输入m_strShowStatic.然后点击“完 成”按钮,退出该向导。如果查看MyDlgDlg.h文件,会看到在 class CMyDlgDlg 类中新添加了成员变量:

MFC 对话框编程 -- 总结

MFC 对话框编程 -- 总结

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 类对象,作为其成员变量。

2.VS2010实验 基于对话框的MFC程序

2.VS2010实验  基于对话框的MFC程序

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,单击右侧‚添加处理程序‛。

网络编程实用教程第二版_第4章MFC编程

网络编程实用教程第二版_第4章MFC编程
这些对象进行封装,每一组类都有一个基类,从基类 派生出众多更具体的类。这些对象包括以下种类:窗 口对象,基类是CWnd;应用程序对象,基类是 CwinThread;文档对象,基类是Cdocument,等等。 程序员可以结合自己的实际,从适当的MFC类中派 生出自己的类,实现特定的功能,达到自己的编程目 的。
13
4.1.2 典型的MDI应用程序的构成
(2) 主边框窗口类CMainFrame
对于MDI应用程序,从CMDIFrameWnd类派 生主边框窗口类,主边框窗口的客户子窗口 (MDIClient)直接包含文档边框窗口。如果是SDI应 用程序,从CFrameWnd类派生边框窗口类,边框 窗口的客户子窗口(MDIClient)直 2.MFC类的继承关系
MFC将众多类的共同特性抽象出来,设计出一 些基类,作为实现其他类的基础。有两个类十分重 要。
CObject是MFC的根类,绝大多数MFC类是从 它派生的。CObject 实现了一些重要的特性,包括 动态类信息、动态创建、对象序列化、对程序调试 的支持等等。所有从CObject派生的类都将具备或者 可以具备CObject所拥有的特性。
8
4.1.1 MFC是一个编程框架 4.MFC的开发模板
MFC实现了对应用程序概念的封装,实现了类、 类的继承、动态约束、类的关系和相互作用的封装。 这样封装的结果是为程序员提供了一套开发模板,罗 列在应用程序向导AppWizard中。针对不同的应用和 目的,程序员可以采用不同的模板。例如,SDI单文 档应用程序模板,MDI多文档应用程序模板,规则 DLL应用程序模板,扩展DLL应用程序模板, OLE/ActiveX应用程序模板,等等。这些模板都采用 以文档-视为中心的思想,每个模板都包含一组特定 的类。

基于MFC的对话框程序[v2]

基于MFC的对话框程序[v2]

基于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”的值为“按钮”。

《Visual C++程序设计教程》第四章对话框设计和Windows常用控件

《Visual C++程序设计教程》第四章对话框设计和Windows常用控件
第4章 对话框设计和Windows常用控件
4.1 对话框应用程序介绍


1.对话框组成 对话框主要由以下两部分组成: (1) 对话框资源:定义了对话框的特性(如大小、位 置和风格等)以及对话框中每个控件的类型、位置等 属性。一般情况下,对话框资源在资源编辑器中静 态地定义,也可以用编程的方法在程序运行时动态 地创建。 (2) 对话框类:对话框类是与对话框资源相关联的, 基于CDialog类的派生类,它提供编程接口来管理对 话框。



1.通过资源编辑器添加控件 打开对话框资源编辑器弹出如图48所示的控 件工具栏之后,就可以方便地在对话框中添加 各种控件了。 (1)单击添加:在控件工具栏上单击要添加 的控件后,将鼠标移动到对话框模板上,此时 鼠标光标变成了“+”形状,在对话框上再次单 击鼠标,控件就添加到对话框模板上了。 (2)拖动添加:拖动要添加的控件到对话框 模板上,然后释放鼠标,也可以添加控件。
(2)单击“新建”按钮可以创建一个资源类型列表中指定类 型的新资源;单击“定制”按钮可以创建资源类型列表中 没有的新类型的资源;单击“导入”按钮可以将外部已有 的位图、图标等资源添加到当前应用程序中。 (3)修改对话框属性。在对话框模板的空白处右击,从弹出 的快捷菜单中选择“属性”命令,弹出如图4-3的“对话属 性”对话框。

4.列表框控件(CListBox) 列表框是一种输入控制,它可以使用户从所列的表 项中进行选择。用户可以在其中选择一个或多个项, 这与单选按钮和复选框的功能有些相近,但不同的 是,列表框中项的数目是灵活变化的,程序运行时 可往列表框中添加或删除某些项。并且,当列表框 中项的数目较多不能一次全部显示时,还可以通过 滚动条来拓展显示范围。

MFC基于对话框编程PPT优秀

MFC基于对话框编程PPT优秀
UpdateData(FALSE);} CFindReplaceDialog类:用于查找或查找替换对话框。 CColorDialog类:用于颜色选择对话框。 (1)为什么必须指定应用程序窗口中控件的切换顺序? 例如,使用文件打开对话框获得要打开文件名的一般代码为: (5)在应用程序中声明对话框对象,并利用对话框的成员函数向用户显示对话框并接收用户的选择。 MB_OKCANCEL MB_RETRYCANCEL
4.2基本消息框
▪ MessageBox( )函数有三个参数。 第一个参数lpszText,是要显示给用户的消息
文本; 第二个参数lpszCaption,是要显示在消息框的
标题栏中的标题,它是可选的; 第三个参数nType,用来指定显示给用户的按
钮或图标,它也是可选的。
函数的第三个参数还可以指定消息框要显示的 图标及按钮风格,
CColorDialog类:用于颜色选择对话框。 模式对话框的数据交换机制
MB_ICONSTOP MB_ICONERROR 使用公用对话框的步骤如下:
CFileDialog类:用于文件的打开或保存对话框。 第二个参数lpszCaption,是要显示在消息框的标题栏中的标题,它是可选的;
CFileDialog类:用于文件的打开或保存对话框。
CFindReplaceDialog类:用于查找或查找替换对话框。 MB_OKCANCEL
MFC类库提供的公用对话框类主要有: (1)为什么必须指定应用程序窗口中控件的切换顺序?
CFontDialog类:用于字体设置对话框。 创建基于对话框的应用程序框架
MessageBox( )函数有三个参数。 如果用户单击了“确定”按钮返回值为IDOK,则读取用户设置来响应用户的操作;

VS2013 MFC 基于对话框编程

VS2013 MFC 基于对话框编程

:可见,为真表示按钮可见,为假表示按钮不可见
:多行,为真表示按钮文本可以多行显示,为假表示按钮文本
不可换行显示
说明:对于只有真假两种选项的属性,可以双击属性名称进行切换

。选中属性名称,在属性页最下方都会有属性说明。
修改两个按钮的
的 的
1. 4 和:
改为“使能”, 改为“ 改为“退出”, 改为“
”; ”;
实现按钮功能
添加按钮的控件型变量,添加方法与添加事件的方法二、三类似,以方
法三为例,对“退出”按钮添加
型的控件变量,这里命名为
。同
理添加“使能”按钮变量

说明:
变量名一般以 开头,后面部分为按钮功能的说明,这样方便记忆和 识别; 按钮只有控件型的变量; 如果有必要的话可以添加一定的注释。
首先修改对话框初始化函数
向导添加
消息处理函数,变添加相关处理程序,比如:
确定退出吗
提示
这样,一个应用程序通过定义,初始化,由
开始,注册、创建、
显示窗口,消息响应,程序终止 完成了他的运行周期。
注意事项 消息响应在程序运行过程时间最长,用来处理所有消息对应的事件 本系列经验往后均已 项目例子进行讲解,以便更加连贯的学习。
在构造函数中赋初值,在初始化函数中初始化控件,这样更有条理性, 大家可以试试。
按钮的使用
按钮(
)可以说是对话框中最常用的控件之一,也是人机交互中必不
可少的控件之一。许多事件都是通过按钮按下来触发的,在这我将介绍按钮的各
种属性以及常用用法,希望对初学者有所帮助。
工具 原料
添加按钮
创建好项目,在工具箱中找到对话框,按钮名称是
是基于对话框的,这里就介绍一下如何在
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.3公用对话框
使用公用对话框步骤 使用公用对话框的步骤如下: (1)创建一个对话框对象并对其属性进行设置。 (2)通过对话框类的DoModal函数向用户显示对话
框并让用户选择。 (3)获得DoModal函数的返回值,判断用户是否做
出了选择。如果用户单击了“确定”按钮返回值为 IDOK,则读取用户设置来响应用户的操作;如果用 户单击了“取消”,则不响应用户的操作。
4.2基本消息框
按钮风格参数
按钮类型
按钮风格参 数
按钮类型
MB_ABORTRETR 终止、重试、 MB_RETRY
YIGNORE
忽略
CANCEL
重试,取消
MB_OK
确定
MB_YESNO 是,否
MB_OKCANCEL
确定,取消
MB_YESNO 是,否,取
CANCEL

4.2基本消息框
图标
图标参数
信息 问号
4.4创建自定义对话框
对话框的基本知识 对话框按照其功能的不同可以分为模式对话框和无模式对话框,
它们在外观上没有什么区别,但是在对话框的创建和删除上 却有一定的区别。 模式对话框是最常见的对话框,当用户在应用程序中显示一个 模式对话框时,不能在该对话框与该应用程序的其它窗口之 间切换,而必须关闭对话框之后,才能将输入焦点转移到应 用程序的其它窗口,这种类型的对话框叫做模式对话框,也 称模态对话框。如Word字处理程序的“打开”对话框。 相对于模式对话框而言,无模式对话框不仅允许在对话框与其 它应用程序的窗口之间切换,而且允许在对话框与同一程序 的窗口之间切换,这种类型的对话框称为无模式对话框,也 称非模态对话框。在Word字处理中,“查找与替换”对话 框就是一个典型的无模式对话框,用户可以一边查找文字, 一边编辑文本。
函数? (4)模式对话框与无模式对话框的数据是如何交换的? 4.5.2作业设计 (1)扩展【例4.1】应用程序功能,设计一模式对话框,当单
击“打开对话框”按钮时,弹出该对话框。 (2)设计一个简单的计算器,有加、减、乘、除、等于等运
算符按钮和数字按钮,能够计算四则运算,将结果显示在窗 口中。
4.2基本消息框
MessageBox( )函数有三个参数。 第一个参数lpszText,是要显示给用户的消息
文本; 第二个参数lpszCaption,是要显示在消息框的
标题栏中的标题,它是可选的; 第三个参数nType,用来指定显示给用户的按
钮或图标,它也是可选的。
函数的第三个参数还可以指定消息框要显示的 图标及按钮风格,
4.4创建自定义对话框
自定义对话框的创建步骤: (1)使用对话框的资源编辑器设计对话框的外观和
控件的布局 (2)使用类向导创建新的对话框类。 (3)在对话框类中加入与控件相关联的成员变量。 (4)给对话框中的控件添加消息处理函数。 (5)在应用程序中声明对话框对象,并利用对话框
的成员函数向用户显示对话框并接收用户的选择。
4.4创建自定义对话框
非模式对话框的数据交换机制
4.4创建自定义对话框
模式对话框的数据交换机制
4.5专题讨论与作业设计
4.5.1专题讨论 (1)为什么必须指定应用程序窗口中控件的切换顺序? (2)为什么要给控件指定惟一的ID值? (3)在检查每个控件的值之前,为什么必须调用UpdateData
MB_ICONINFORMATION MB_ICONASTERISK MB_ICONHAND
MB_ICONQUESTION
停止号 MB_ICONSTOP MB_ICONERROR
惊叹号 MB_ICONWARNING MB_ICONEXCLAMATION
4.2基本消息框
按钮 确定 取消 终止 重试 忽略 是 否
第4章 MFC基于对话框编程
保定职业技术学院
第4章 MFC基于对话框编程
4.1基于对话框的应用程序 4.2基本消息框 4.3公用对话框 4.4创建自定义对话框 4.5专题讨论与作业设计
4.1基于对话框的应用程序
创建基于对话框的应用程序框 在对话框中添加控件 编辑控件的属性 关联控件与变量 关联功能与控件
4.3公用对话框
例如,使用文件打开对话框获得要打开文件 名的一般代码为:
CFileDialog fdlg(TRUE); //调用对话框,让用户选择
if(fdlg.DoModal()==IDOK) { m_edit_sRV=fdlg.GetPathName(); UpdateData(FALSE);}
返回值 1 2 3 4 5 6 7
4.2基本消息框
4.3公用对话框
公用对话框类 MFC类库提供的公用对话框类主要有: CColorDialog类:用于颜色选择对话框。 CFileDialog类:用于文件的打开或保存对话框。 CFindReplaceDialog类:用于查找或查找替换对话框。 CFontDialog类:用于字体设置对话框。 CPrintDialog类:用于打印设置对话框。
4.2基本消息框
消息框函数 消息框函数MessageBox( )是窗口类用来创建
消息框的一个成员函数,函数的定义如下: int MessageBox(
LPCTSTR lpszText, LPCTSTR, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );
相关文档
最新文档