对话框与控件
对话框及常用控件
2
对话框程序的创建
2.1 一个对话框程序 2.2 创建对话框资源模板 2.3 利用对话框类CDialog操纵对话框 2.4 初始化对话框 2.5 对话框的调用 2.6 对话框的消息处理
2.1
一个对话框程序
1.程序功能 该应用程序具有认证的功能:当该程序运行时,首先弹 出一个“密码验证” 对话框,让用户输入其用户名和密 码。用户需要输入用户名“good”和用户密码“ good ” 后才能进入主界面,若有一个输入错误,都不能进入。 2.程序类型
1.3 对话框的组成(续)
对话框类 从CDialog类派生的对话框类提供编程接口来 管理与对话框模板相关联的对话框。 CDialog 类的 许多成员函数与对话框编程密切相关,可供程序员 调用。由于对话框是一种窗口,因此相应的对话框 类必须与一个Windows窗口相联系,而对话框资源 模板就是用于创建这个 Windows窗口及其包含在其 中的控件。 对话框类可以看作对话框应用程序的一种程序 员接口,用户对应用程序操作,后台调用的都是该 类的成员函数来完成的。
可见在对话框的构造函数中主要是对对话框的数据成员变量 进行初始化。
2.4
初始化对话框(续)
2.在WM_CREATE的消息映射函数中初始化 由于对话框也是窗口,它在窗口创建时会收到 WM_CREATE 消息,该消息的响应函数是 OnCreate()。 这样,就能在窗口创建中做一些初始化工作。尽管用户 可能在 WM_CREATE 消息处理函数中进行一些数据成员 的初始化工作,但更通常的做法是在对话框中的所有控 件都建立起来之后,响应消息 WM_INITDIALOG 时,对 数据成员进行初始化。 3.在WM_INITDIALOG的消息映射函数中初始化 在对话框创建时,会收到 WM_INITDIALOG 消息,该 消息的响应函数是OnInitDialog()。在得到了
对话框的八种形式
对话框的八种形式对话框是一种在计算机界面上显示的交互元素,用于与用户进行交流。
它通常以窗口的形式出现,并提供文本输入和输出的功能。
下面是八种常见的对话框形式:1. 提示对话框(Alert Dialog):提示对话框用于向用户显示一条消息,并通常包含一个“确定”按钮。
它常用于向用户显示一些重要信息或警告。
2. 确认对话框(Confirmation Dialog):确认对话框用于向用户询问一些操作是否确认。
它通常包含“确定”和“取消”两个按钮,用户可以选择其中一个来确认或取消操作。
3. 输入对话框(Input Dialog):输入对话框要求用户输入一些信息,通常以表单的形式出现。
它可以包含文本框、下拉菜单等控件,用户可以填写或选择相应的数据。
4. 文件选择对话框(File Chooser Dialog):文件选择对话框用于让用户选择一个或多个文件。
它通常显示一个文件浏览器界面,用户可以在其中浏览并选择文件。
5. 颜色选择对话框(Color Picker Dialog):颜色选择对话框允许用户选择一个颜色。
它通常显示一个调色板,用户可以在其中选择所需的颜色。
6. 字体选择对话框(Font Picker Dialog):字体选择对话框用于让用户选择一个字体和字号。
它通常显示一个字体列表和字号选择器,用户可以在其中进行选择。
7. 进度对话框(Progress Dialog):进度对话框用于显示一些操作的进度。
它通常包含一个进度条和一条描述性的文本,用户可以看到操作的进展情况。
8. 自定义对话框(Custom Dialog):自定义对话框允许开发人员根据需要自定义对话框的外观和功能。
它可以包含任意的控件和界面元素,以满足特定的需求。
这些对话框形式都是常见的,在计算机界面中经常使用。
它们可以帮助用户进行交互,提供反馈和指导,提高用户体验和界面的可用性。
开发人员可以根据具体的需求选择适合的对话框形式,以满足用户的需求。
第10章-C++面向对象程序设计(Visual C++ 2010版)-温秀梅-清华大学出版社
基本控件的共同属性
(1) ID属性 用于指定控件的标识符,Windows依靠ID来区分不同 的控件。
(2) Caption(标题)属性 对控件将要实现的功能进行文字说明。如果控件标题 中包含字符&,则紧跟其后的字符在显示时会有一条下划 线,通过这样的设置,按(Alt+带下划线的字符)组合键, 将触发控件被单击的事件或切换到相应的控件。
单击“下一步”按钮,弹出如图10.3所示的“MFC 应用 程序向导-ch10_1”之“应用程序类型”对话框,在该 对话框中选择“基于对话框”的应用程序类型。应用程 序有以下四种类型:单个文档(Single document)、 多个文档(Multiple documents)、基于对话框( Dialog based)和多个顶级文档。选择不同的应用程序 类型时,对话框左上角会显示不同风格的应用程序窗口 图标,不同类型应用程序的具体说明如表10.2所示。
图10.8 ch10_1应用程序的运行结果
使用AppWizard 工具生成的 程序和改变了的复选框
组合框 分组框 静态文本框
命令按钮 编辑框 列表框 单选按钮 图片框
10.3 基本控件
水平滚动条 滑块
进度条
列表框
选项卡控件
垂直滚动条 微调器 热键
树型列表框
IP地址
允许用户产生一个多文档界面(MDI)结构的应用程序。该项为默认选项。在 多文档界面应用程序中允许同时操作多个文档。在界面中可以同时打开多个文 件(同时也就为每个文件打开一个窗口),并通过切换窗口激活相应的文档进 行编辑
允许用户产生一个基于对话框的应用程序。基于对话框结构的应用程序,主要 用于人机对话,为用户传送一些消息给计算机
图10.3 “MFC 应用程序向导-ch10_1”之“应 用程序类型”对话框
VC++ 课件 第05章 对话框和常用控件
5.2控件的创建和使用方法
5.2.1控件的创建方法 控件的创建方式有以下两种: 一种是在对话框模板中用编辑器指定控件,也就是说,将控件的父窗口指 定为对话框,这样做的好处是明显的,因为当应用程序启动该对话框时, Windows系统就会为对话框创建控件;而当对话框消失时,控件也随之清 除。 另一种方式是将控件看作是任一窗口的子窗口,并通过调用相应的Create 函数来创建。 [例Ex_SDIHello] 在上例Ex_SDIHello的基础上用子窗口方式创建控件。 (1)打开CMyDlg的头文件MyDlg.h,添加一个按钮类CButton指针变量: class CMyDlg : public CDialog { // Construction public: CMyDlg(CWnd* pParent = NULL); // standard constructor CButton *m_btnWnd; … }
5.1对话框的使用
在程序中使用对话框 (1)利用项目工作区的ClassView标签项,将Ex_SDIHello.cpp源文件打开; (2)在Ex_SDIHello.cpp源文件的前面加上包含类CMyDlg的头文件: #include "MyDlg.h" (3)在InitInstance函数体中的“return TRUE;”语句之前添加下列代码: CMyDlg dlg; dlg.DoModal(); DoModal是模态对话框最常用的函数,它负责对话框的显示和终止。 (4)编译并运行。在程序的一开始就出现用户自己设计的对话框,单击 [Button1]按钮将弹出“欢迎进入对话框的设计!”的消息对话框来。
5.1对话框的使用
5.1.2使用对话框编辑器
打开对话框编辑器
将项目工作区窗口切换到ResourceView页面,双击Dialog目录下任意一个对 话框ID。或者,选择“Insert”“Resource”菜单命令(或按快捷键Ctrl+R), 选择Dialog项,单击New。
Windows程序设计 第3章 对话框和常见控件
树形控件
树形控件(TreeCtrl)和下面要讲的列表控件(ListCtrl) 在系统中大量被使用,例如Windows资源管理器就是一 个典型的树形控件例子。 树形控件可以用于树形的结构,其中有一个根接点(Root) (Root) 然后下面有许多子结点,而每个子结点上有允许有一个 或多个或没有子结点。MFC中使用CTreeCtrl类来封装树 形控件的各种操作。通过调用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
滚动条控件
滚动条(Scroll Bar)一般不会单独使用,因为SpinCtrl 可以取代滚动条的一部分作用,但是如果我们需要自己生 成派生窗口,滚动条还是会派上一些用场。创建一个滚动 条可以使用成员函数: : BOOL CEdit::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );
MFC 提供类CDialog作为对话框服务的基类,类CDialog将对话框模板与使 用对话框时必需熟悉的几种类方法进行封装。对于对话框中发送消息的的 控件,我们可创建相应的消息处理程序。MFC编译器提供的框架工具使得 我们把对话框中的控件消息映像到派生类的类函数变得简单、快捷。对话 框数据映像函数使用专门的值初始化对话框中的控件,接着检索数据并使 之有效。大多数对话框需要类成员变量来跟踪用户的输入,这些数据在数 据映像中使用,它们在对话控件与类变量之间自动映像数据。 为创建对话框,首先建立CDialog对象,然后创建和显示对话框窗口我们 有两种选择:一种方法是调用函数CDialog::DoModal()来创建有模式对话 框窗口,另一种方法是调用函数CDialog::Create()来创建无模式对话框窗口, 在上述两种情况之下,对话框对象先初始化,然后创建对话框以及它的控 件。 类CDialog成员函数Create()使用两种重载原形,最常用的一种如下: Create(UINT nIDTemplate, CWnd * pParentWnd=NULL); 其中,参数nIDTemplate是一个对话框模板的标识符, 参数pParentWnd是对话框所属的父窗口。
VBA对话框设计和使用技巧
VBA对话框设计和使用技巧VBA(Visual Basic for Applications)是一种用于Microsoft Office应用程序的编程语言。
它可以用于自动化任务、增强功能以及创建用户界面。
在处理各种应用程序任务时,对话框是一个重要的交互工具。
本文将介绍如何使用VBA来设计和使用对话框,以提高用户体验和效率。
一、对话框设计基础1. 对话框的目的:在开始设计对话框之前,我们需要明确对话框的目的。
对话框是用于与用户进行交互的窗口,可以用于输入数据、显示信息、进行选择等。
因此,我们需要确定对话框的用途和功能,以便正确地设计和使用它。
2. 对话框类型:VBA提供了几种常见的对话框类型,如消息框、输入框、文件对话框和用户自定义对话框等。
我们可以根据需要选择不同类型的对话框,以实现特定的功能。
3. 对话框控件:对话框由一系列控件组成,用于显示内容和接收用户的输入。
常见的对话框控件包括标签(Label)、文本框(TextBox)、复选框(CheckBox)、单选按钮(OptionButton)和按钮(CommandButton)等。
了解各种控件及其属性对于设计和定制对话框非常重要。
二、使用VBA创建对话框1. 创建基本对话框:在VBA中,我们可以使用`UserForm`对象来创建基本的用户界面。
打开VBA编辑器(Alt + F11),点击插入菜单中的用户窗体,选择“用户窗体”选项,即可创建一个新的用户窗体。
我们可以通过在用户窗体上添加控件、设置属性和编写代码来自定义对话框。
2. 控件添加和布局:通过拖拽和放置控件,我们可以向用户窗体中添加所需的控件。
可以使用“工具箱”中的工具来添加各种控件,并使用鼠标和键盘调整控件的大小和位置。
为了使对话框布局合理、美观,需要仔细选择和排列控件。
3. 设置控件属性:控件的属性决定了其外观和行为。
通过右键单击控件并选择“属性”,我们可以设置控件的名称、标签、大小、颜色、字体、可见性等属性。
mfc对话框基础要点
第五章对话框对话框是一种用户界面,它的主要功能是输出信息和接收用户的输入。
对话框与控件是密不可分的,在每个对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互。
一个典型的对话框例子是选择了File-Open命令后弹出的文件对话框。
5.1对话框和控件的基本概念5.1.1对话框的基本概念对话框(Dialog)实际上是一个窗口。
在MFC中,对话框的功能被封装在了CDialog类中,CDialog类是CWnd类的派生类。
对话框分为模态对话框和非模态对话框两种。
大部分读者都会有这样的经历,当你通过File-Open命令打开一个文件对话框后,再用鼠标去选择菜单将只会发出嘟嘟声,这是因为文件对话框是一个模态对话框。
模态对话框垄断了用户的输入,当一个模态对话框打开时,用户只能与该对话框进行交互,而其它用户界面对象收不到输入信息。
我们平时所遇到的大部分对话框都是模态对话框。
非模态对话框的典型例子是Windows95提供的写字板程序中的搜索对话框,搜索对话框不垄断用户的输入,打开搜索对话框后,仍可与其它用户界面对象进行交互,用户可以一边搜索,一边修改文章,这样就大大方便了使用。
本节主要介绍模态对话框,在第四节将介绍非模态对话框。
从MFC编程的角度来看,一个对话框由两部分组成:1.对话框模板资源。
对话框模板用于指定对话框的控件及其分布,Windows根据对话框模板来创建并显示对话框。
2.对话框类。
对话框类用来实现对话框的功能,由于对话框行使的功能各不相同,因此一般需要从CDialog类派生一个新类,以完成特定的功能。
5.1.2控件的基本概念图5.1对话框中的控件控件(Control)是独立的小部件,在对话框与用户的交互过程中,控件担任着主要角色。
控件的种类较多,图5.1显示了对话框中的一些基本的控件。
MFC的控件类封装了控件的功能,表5.1介绍了一些常用的控件及其对应的控件类。
表5.1控件实际上都是窗口,所有的控件类都是CWnd类的派生类。
实验1 创建对话框应用程序及控件使用
实验1 创建对话框应用程序及控件使用一.实验目的1.掌握使用“MFC应用程序向导”创建对话框应用程序框架的方法2.掌握给对话框添加控件的方法,以及使用“MFC类向导”为控件通知消息映射消息处理函数的方法3.掌握使用“MFC类向导”为控件添加控件变量的方法4.掌握控件变量与控件的数据交换机制以及使用控件变量访问和控制控件的方法5.掌握对话框中添加自定义消息的方法二.实验内容1.创建一个Windows对话框应用程序,其界面要求实现以下功能:在下部的文本编辑框(Edit Control )中输入内容后,单击“添加”按钮,文本编辑框的内容被作为一个条目添加到上部的列表框(List Box)中2.为上一步创建的程序添加一条自定义消息,消息名为WM_MYMESSAGE,也可自己命名。
单击“添加”按钮时,将发送盖消息,该消息的处理函数将删除编辑框中已输入的所有内容。
三.实验步骤1.使用“MFC应用程序向导”创建一个对话框应用程序,项目名称编程者自己确定。
2.将主动生成的对话框中的静态文本控件和“取消”命令按钮删除,在窗口上部添加一个列表框(List Box)控件,在列表框中的静态文本控件和“取消命令按钮删除,在窗口上部添加一按钮左侧添加一个命令按钮(Button)控件.3.将“确定”按钮的caption属性修改为“退出”,新添加的命令按钮的caption属性修改为“添加”,修改对话框窗口的caption属性为“实验1”,调整各控件的大小和布局如上图所示。
4.为列表框控件添加一个控制变量,类别为control,变量名编程者自己确定,这里取名为m_list,为编辑框控件添加一个控制变量,类别为value,类型Cstring,变量名为m_Edit,也可由编程者自己确定。
5.为“添加”按钮添加并编写BN_CLICKED消息的消息处理函数,该函数代码如下:Void CShiyanDlg : : OnBnclickedButton1( ){//TODO:在此添加控件通知处理程序代码UpdateData(true); //将控件中的数据交换至控件变量If(!m_Edit . ISEmpty()) //如果编辑框内容不空,则将内容添加至列表框M_List . Addstring(m_Edit);}6.编译运行程序,在文本编辑框中输入内容并单击“按钮”,观察执行结果。
mfc 程序框架
mfc 程序框架
MFC(Microsoft Foundation Class Library)是微软提供的一个C++框架,主要用于开发Windows桌面应用程序。
以下是MFC程序的基本框架:
1. 应用程序启动过程:
应用程序的启动从main()函数开始,main()函数通过CWinApp类创建一
个应用程序对象,然后调用该对象的Run()函数进入消息循环。
2. 文档/视图结构:
MFC程序通常采用文档/视图结构,这种结构将应用程序的数据(文档)和数据的显示与修改(视图)分开。
在MFC中,框架对象、文档对象和视图
对象是通过一个单文档模板指针有机地组织在一起,并利用AddDocTemplate函数把这个单文档模板添加到文档模板中,从而把这三
个类组织成为一个整体。
3. 对话框和控件:
MFC程序可以使用对话框和控件来与用户交互。
对话框可以通过类向导创建,控件可以通过类向导添加到对话框中。
4. 事件处理:
MFC程序通过事件处理来响应用户的操作。
事件处理函数通常在类向导中
创建,并在函数中添加处理代码。
5. 资源管理:
MFC程序使用资源管理器来管理界面资源,包括对话框、控件等。
资源管
理器负责加载和卸载资源。
6. 数据库操作:
MFC程序可以通过MFC提供的数据库类来进行数据库操作,如CRowset 类、CRecordset类等。
7. 网络编程:
MFC程序也可以进行网络编程,通过MFC提供的网络类如CSocket类等。
以上是MFC程序的基本框架,具体实现会根据具体需求有所不同。
c++学习指导对话框和常用控件
3.1对话框的使用 对话框的使用
图3.3 对话框属性窗口 对话框的常规( 表3.2 对话框的常规(General)属性 )
项 目 ID框 标题框 字体按钮 位置X/位置Y 菜单框 类名称框 说 明 修改或选择对话框的标识符名称 输入对话框的标题名称,中英文均可,如“我的对话框” 单击此按钮可选择字体的种类(如宋体)及尺寸(如9号) 对话框左上角在父窗口中的X、Y坐标,都为0时表示居中 默认值为无,当对话框需要菜单时输入或选择指定的菜单资 源 默认值为无,它提供C/C++语言编程时所需要的对话框类名, 对MFC类库的资源文件来说,该项不被激活。
3.1对话框的使用 对话框的使用
图3.3中,有一个 图标,当单击此图标后,图标变成,表示该对话框将一直显示直 到用户关闭它。在 状态下,当该对话框一旦失去活动状态后就会自动消失!
将添加的对话框的属性进行以下3点修改,结果如图3.4所示: ● 在ID框中,将对话框标识符IDD_DIALOG1改成IDD_DIALOG_FIRST; ● 在标题框中,将对话框标题“对话”改为“我的第一个对话框”; ● 单击[字体]按钮,通过弹出的字体对话框将对话框内的文本设置成“宋体,9” , 以使自己的对话框和Windows中的对话框保持外观上的一致(这是界面设计的“一致性” 原则)。
向对话框添加一个控件的方法有下列几种: ● 在控件工具栏中单击某控件,此时的鼠标箭头在对话框内变成“十”字形状;在 对话框指定位置单击鼠标左键,则此控件被添加到对话框的相应位置,再拖动刚添加控 件的选择框可改变其大小和位置。 ● 在控件工具栏中单击某控件,此时的鼠标箭头对话框内变成“十”字形状;在指 定位置处单击鼠标左键不放,拖动鼠标至满意位置,释放鼠标键。 ● 用鼠标左键点中控件工具栏中的某控件,并按住鼠标左键不放;在移动鼠标到对 话框的指定位置的过程中,用户会看到一个虚线框,下面带有该控件的标记;释放鼠标 左键,新添加的控件立即出现在对话框中。 2. 控件的选取 控件的删除、复制和布局操作一般都要先选取控件,若选取单个控件,则可以下列 方法: ● 用鼠标直接选取。首先保证在控件工具栏中的选择按钮()是被选中的,然后 移动鼠标指针至指定的控件上,单击鼠标左键即可。 ● 用助记符来选取。如果控件的标题中带有下划线的字符,这个字符就是助记符, 选择时直接按下该助记符键或“Alt+助记符”组合键即可。
对话框及常用控件
统一的视觉风格
对话框的视觉风格应与应 用程序的整体风格保持一 致。
合适的色彩搭配
对话框的颜色搭配应符合 应用程序的主题和风格, 同时也要考虑色彩的对比 度和舒适度。
精美的图标和插图
对话框中可以适当地使用 图标和插图,以提高视觉 效果和用户体验。
一致性
对话框布局一致
不同对话框的布局和组件应保持一致,以提高用户对 应用程序的熟悉度和使用效率。
提示对话框
总结词
提供简短信息或警告的对话框
详细描述
提示对话框通常用于向用户显示应用程序的状态或提 供简短的通知。它包含一个标题、一条消息和一个关 闭按钮。根据需要,提示对话框还可以包含图标以强 调其重要性。
感谢观看
THANKS
按钮
总结词
用于触发特定功能的控件
详细描述
按钮是常见的交互控件,用户点击按钮后可以触发特定的功能或操作。根据功 能,按钮可分为确认、取消、提交等类型。
列表框
总结词
用于显示和选择列表项的控件
详细描述
列表框可以显示一系列的列表项,用户可以通过鼠标或键盘选择所需的列表项。根据选择方式,列表 框可分为单选列表框和多选列表框。
对话框的分类
模态对话框
模态对话框会阻塞用户对其他界面的 操作,直到对话框关闭。这类对话框 常用于需要用户做出决策或输入的情 况。
非模态对话框
非模态对话框不会阻塞用户对其他界 面的操作,用户可以在对话框打开的 同时进行其他操作。这类对话框常用 于显示信息或提供简单的选项。
对话框的使用场景
确认操作
01
复选框
总结词
用于表示选项是否被选中的控件
详细描述
复选框是一种开关控件,用户可以通过点击来选中或取消选中某个选项。多个复选框可 以组合在一起,表示多个选项的组合。Fra bibliotek单选按钮
AutoLISP对话框DCL控件属性
AutoLISP对话框DCL控件属性AutoLISP对话框DCL控件属性及其对应控件,总结如下表所⽰。
属性释义及常⽤值相关控件button,edit_box,image,image_button,list_box,popup_list,radio_button,slider,toggleaction链接⼀个LISP函数,响应⿏标或键盘动作alignment控件布局,值:所有控件left,centered,right,top,centered,bottomedit_box,image_button,list_boxallow_accept控件是否相应ENTER键,值:true,falseaspect_radio控制控件的宽⾼⽐image,image_buttonbig_increment滑动条最⼤步进值sliderchildre_alignment容器⾥控件内部控件布局boxed_column,boxed_radio_column,boxed_radio_row,boxed_row,column,radio_column,radio_row,row child_fixed_height全部控件child_fixed_width全部控件color图像、背景、⽮量快的颜⾊image,imange_buttonedit_limit编辑框最⼤允许字符数,默认值132edit_boxedit_width编辑框宽度edit_box,popup_listfixed_height全部控件fixed_width全部控件fixed_width_font列距和⾏距不变情况下调整字符间距list_box,popup_listheight控件最⼩⾼度全部控件initial_focus确定对话框内被聚焦的控件dialogis_bold字体是否粗体显⽰textis_cancel是否相应ESC按键buttonis_default是否相应ENTER按键buttonis_enabled控件是否有效button,edit_box,iamge,image_button,list_box,popup_list,radio_button,toggleis_tab_stop控件是否接受TAB聚焦button,edit_box,iamge,image_button,list_box,popup_list,radio_button,togglekey控件关键字button,edit_box,iamge,image_button,list_box,popup_list,radio_button,slider,text,togglelabel控件标签boxed_column,boxed_radio_column,boxed_radio_row,boxed_row,button,dialog,edit_box,list_box,popup_list,radio_button,slider,text,text_part,togglelayout slider控件的⽅向sliderlist初始值list_box,popup_listmax_value slider最⼤值slidermin_value slider最⼩值slidermnemonic控件助记符button,edit_box,image,list_box,popup_list,radio_button,slider,togglemultiple_select可否多选list_boxpassword_char⽤户输⼊屏蔽字符edit_boxsmall_increment slider控件最⼩步进值slidertabs list_box,popup_listtab_truncate list_box,popup_listvalue初始值dialog,edit_box,imange,list_box,popup_list,radio_button,slider,text,togglewidth控件最⼩宽度全部控件AutoLISP常⽤预定义控件包括ok_only,ok_cancel,errtile,ok_cancel_help,ok_cancel_help_errtile,ok_cancel_help_info六种。
MFC 对话框和常用教程
第五章对话框和常用控件对话框是Windows应用程序中最重要的用户界面元素之一,是与用户交互的重要手段,在程序运行过程中,对话框可用于扑捉用户的输入信息或数据。
对话框是一个特殊类型的窗口,任何对窗口进行的操作(如:移动、最大化、最小化等)都可在对话框中实施,一般来说,在对话框中通过各种控件(如:按钮、编辑框、列表框、组合框等)来和用户进行交互。
控件是在系统内部定义的用于和用户交互的基本单元。
一、对话框的使用Visual C++提供的对话框编辑器能“可视”地进行设计、编辑,并可用ClassWizard为对话框从CDialog基类中派生一个类,MFC的CDialog类封装了用于对话框的显示、关闭等操作的许多功能函数,例如:DoModal函数用来显示模式对话框并返回用户操作的结果。
1、模式对话框(为186附加举例页)所谓模式对话框是指,当对话被弹出时,用户必须在对话框中进行相应的操作,在退出对话框之前,对话框所在的应用程序不能继续执行。
平常我们所见到的对话框大多是模式对话框。
例:模式对话框(通过菜单命令弹出)1)建一个单文档(SDI)应用程序2)创建对话框模板Insert→Resource→选中Dialog→单击New拖过一个静态文本,鼠标对准它,按右键点properties改标题为“新建模式对话框”。
3)鼠标右键对准对话框的任何位置单击,选择properties选项,设置ID为IDD_MYDIALOG 4)给对话框创建类双击新建对话框的任何位置,单击OK,写类名为“CMyDlg”,保证”CDialog”作为该类的基类。
5)创建菜单命令:a)打开资源编辑器的菜单项Menub)双击IDR_MAINFRAMEc)双击右边空白菜单,点开pop_up(让它是空白),在名字处写”弹出对话框(&A)”,ID 处写ID_PUPDIALOG6)将菜单命令连接到主框架程序中,完成ID_PUPDIALOG的消息映射:View→ClassWizard→保证Class name里是CMainFrame,在ObjectIDs里找到ID_PUPDIALOG点黑→Messages里(右边)点COMMAND建立主框架对象方法并加代码:void CMainFrame::OnPupdialog(){ CMyDlg MyDlg;MyDlg.DoModal(); //DoModal()是CDialog类成员函数,通过调用该//函数将显示对话框。
对话框及其应用
示例2:dxan:dialog{
label="确定图纸幅面"; :boxed_radio_row{label="幅面规格"; :radio_button{label="A0"; key="a0"; } :radio_button{label="A1"; key="a1"; } :radio_button{label="A2"; key="a2"; } :radio_button{label="A3"; key="a3"; } :radio_button{label="A4"; key="a4"; } :radio_button{label="A5"; key="a5"; value=5;} } ok_cancel; }
续前: :edit_box{label="半径R(mm)="; mnemonic="R"; key="R";value=25;} ok_cancel; }
示例4:
示例4的显示结果:
示例5:
示例5的显示结果:
第六讲 对话框的程序驱动
能够编写对话框文件,仅仅是迈出了对 话框设计的第一步,事实上,编写对话 框文件比较容易,而要控制对话框,使 之实现应有的功能,就要下更大的功夫。 要显示编写的对话框并有效控制它,需 要结合AutoLISP编程。AutoLISP提供了 处理对话框的各种管理函数,利用它们 可以实现DCL文件的各种控制。
(action_tile “accept” “(done_dialog)”) (action_tile “cancel” “(setq a –1) (done_dialog)”)
如何让对话框中的控件和对话框一起变小变大
MFC:如何让对话框中的控件和对话框一起变小变大默认分类2009-11-16 17:44:35 阅读409 评论4 字号:大中小订阅MFC:如何让对话框中的控件和对话框一起变小变大(2009-07-01 16:23:02)标签:电脑对话框mfc控件wm_size onsize()it分类:C/C++/VC 一个基于对话框的MFC界面,怎么样才能让对话框里的控件能和对话框同比例变小变大?今天我一直想解决这个问题,这是师姐留给我的任务。
经过在网上的大量搜素,终于找到了解决方法,其实比较简单。
一般情况下,我们新建的对话框,里面的“确定”和:取消”按钮,在对话框最大化得时候,不会一起变大的,而是保持原来的大小。
最简单的情况:当我们点击最大化按钮的时候,对话框会最大化,但是控件“确定”和“取消”不会跟着变大。
如果我们在对话框上面有多少控件,那么会很丑,而且很不实用,最大化本来就是想看的更清楚嘛。
我们可以采取下面的措施:对话框也是窗口,最大化是对窗口大小的改变,而在windows message handle中有个WM_SIZE的消息,该消息在窗口大小发生变化的时候会产生。
那么我们可以根据这个消息,在窗口大小发生变化的时候,利用MoveWindow()函数来重新设置各个控件的大小。
还是以上面最简单的情况为例子:1 首先要知道对话框大小是否改变,改变了多少,我们应该记录当前对话框的大小。
在对话框类中添加成员变量CRect m_rect 他是用来记录当前对话框的大小。
我们在OnInitDialog()函数中获取对话框创建时的大小:GetClientRect(&m_rect);2 增加消息WM_SIZE的消息响应函数OnSize():只要对话框大小发生变化,就会调用该函数。
3 在OnSize()函数中增加如下代码:(最简单的为例子,就一个确定按钮和取消按钮)void CTestDlg::OnSize(UINT nType, int cx, int cy){CDialog::OnSize(nType, cx, cy);// TODO: Add your message handler code herefor (int i=1;i<=2;i++) //因为是两个控件,所以这里用了循环{CWnd *pWnd;pWnd = GetDlgItem(i); //获取ID为i的空间的句柄,因为“确认”ID为1,“取消”ID为2 if(pWnd) //判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建{CRect rect; //获取控件变化前的大小pWnd->GetWindowRect(&rect);ScreenToClient(&rect//将控件大小转换为在对话框中的区域坐标//cx/m_rect.Width()为对话框在横向的变化比例rect.left=rect.left*cx/m_rect.Width();//调整控件大小rect.right=rect.right*cx/m_rect.Width();rect.top=rect.top*cy/m_rect.Height();rect.bottom=rect.bottom*cy/m_rect.Height();pWnd->MoveWindow(rect);//设置控件大小}}GetClientRect(&m_rect);// 将变化后的对话框大小设为旧大小}然后运行,当对话框最大化的时候,两个按钮也变大了。
《Visual C++程序设计教程》第四章对话框设计和Windows常用控件
4.1 对话框应用程序介绍
1.对话框组成 对话框主要由以下两部分组成: (1) 对话框资源:定义了对话框的特性(如大小、位 置和风格等)以及对话框中每个控件的类型、位置等 属性。一般情况下,对话框资源在资源编辑器中静 态地定义,也可以用编程的方法在程序运行时动态 地创建。 (2) 对话框类:对话框类是与对话框资源相关联的, 基于CDialog类的派生类,它提供编程接口来管理对 话框。
1.通过资源编辑器添加控件 打开对话框资源编辑器弹出如图48所示的控 件工具栏之后,就可以方便地在对话框中添加 各种控件了。 (1)单击添加:在控件工具栏上单击要添加 的控件后,将鼠标移动到对话框模板上,此时 鼠标光标变成了“+”形状,在对话框上再次单 击鼠标,控件就添加到对话框模板上了。 (2)拖动添加:拖动要添加的控件到对话框 模板上,然后释放鼠标,也可以添加控件。
(2)单击“新建”按钮可以创建一个资源类型列表中指定类 型的新资源;单击“定制”按钮可以创建资源类型列表中 没有的新类型的资源;单击“导入”按钮可以将外部已有 的位图、图标等资源添加到当前应用程序中。 (3)修改对话框属性。在对话框模板的空白处右击,从弹出 的快捷菜单中选择“属性”命令,弹出如图4-3的“对话属 性”对话框。
4.列表框控件(CListBox) 列表框是一种输入控制,它可以使用户从所列的表 项中进行选择。用户可以在其中选择一个或多个项, 这与单选按钮和复选框的功能有些相近,但不同的 是,列表框中项的数目是灵活变化的,程序运行时 可往列表框中添加或删除某些项。并且,当列表框 中项的数目较多不能一次全部显示时,还可以通过 滚动条来拓展显示范围。
控件(control)是一类用于显示数据
2.控件控件(control)是一类用于显示数据、接受输入和完成操作的图形对象,一般放置在对话框或窗口中。
1)控件类MFC 8.0中有31个控件类,它们都是从CWnd类直接或间接派生的。
控件类的层次结构常用的控件类有:●CStatic(静态文本):一种静态显示的窗口,一般用于标注(label)——显示静态文本串。
它不能接受鼠标和键盘输入,也不能向其父窗口(对话框等)发送WM_COMMAND消息。
静态控件有时也作为图片框,在其中显示图像●CEdit(编辑控件):一种可编辑文本的窗口,用于接受用户的文本输入。
在该类中,提供了大量的文本编辑函数及通知消息的响应接口。
如Copy、Cut、Paste、Clear、Undo、SetSel、ReplaceSel、GetSel、GetLine,ON_EN_CHANGE(改变OnChange*)、ON_EN_SETFOCUS(获得输入焦点OnSetfocus*)、ON_EN_KILLFOCUS(失去输入焦点OnKillFocus*)。
可以通过设置编辑控件的“Multiline”属性为“True”来实现多行文本的显示。
这时还可以设置“VScroll”属性为“True”,来支持多行文本的垂直滚动。
(缺省情况下,编辑控件的“Multiline”属性为“False”,“VScroll”属性也为“False”[而且不能修改设置]。
只有“HScroll”属性缺省为“True”,支持单行文本的水平滚动。
)●CButton(按钮):用于执行命令。
MFC在该类中为按钮(pushbutton)、复选框和单选钮提供编程接口。
按钮控件有两个主要的通知消息:ON_BN_CLICKED(单击OnBnClicked*)和ON_BN_ DOUBLECLICKED(双击OnDoublec licked*)⏹复选框(check box核对盒):可选中(TRUE设置状态)或不选(FALSE取消设置状态)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上一页 下一页 返回
3.1 对话框的使用
• (6)将菜单(ID_PUPDIALOG)消息映射到主框架类CMainFrame 中,并添加代码:
• void CMainFrame::OnPupdialog() • { CMyDlg MyDlg; // CMyDlg 是CDialog 的派生类,这里是定义对话
第3 章 对话框与控件
• 3.1 对话框的使用 • 3.2 资源与资源标识 • 3.3 创建对话框及添加控件 • 3.4 控件的创建和使用方法 • 3.5 常用控件 • 3.6 标签控件、图像列表、属性表及属性页 • 3.7 向导对话框 • 3.8 菜单对话框 • 3.9 章后实训
返回
3.1 对话框的使用
框类对象 • MyDlg.DoModal(); //DoModal()是CDialog 类成员函数,调用该函
数来显示对话框 •} • (7)在CMainFrame.cpp 文件前面的文件包含处写: #include
"MyDlg.h"。
上一页 下一页 返回
3.1 对话框的使用
• (8)编译运行,单击“模式对话框(A)”菜单,弹出模式对话框, 如图3.1 所示。程序只能在对话框中进行相应的操作,不能进行其他 操作。
• [例3.2]创建一个无模式对话框。 • 无模式对话框在弹出后,可一直保留在屏幕上,用户可继续在应用中
进行其他操作或启动其他应用程序,当需要使用对话框时,只需像激 活一般窗口一样激活对话框即可。 • (1)创建一个SDI(单文档)应用程序,名为:无模式对话框。 • (2)按上例步骤创建对话框模板。拖进一个静态文本,其ID 不动, 在标题(Caption)框写:新建无模式对话框。 • (3)为对话框创建类,类名为:CDlg。
• (1)添加对话框资源。 • (2)设置对话框的属性。 • (3)添加和布局控件。 • (4)创建对话框类。 • (5)添加对话框代码。 • (6)在程序中调用对话框。
下一页 返回
3.1 对话框的使用
• [例3.1]创建一个模式对话框。 • 所谓模式对话框是指当对话框被弹出时,用户必须在对话框中进行相
上一页 下一页 返回
3.1 对话框的使用
• (3)右键单击对话框的任何位置,弹出快捷菜单,单击 “properties”,弹出“Dialog properties”对话框,将对话框的“ID” 改为“IDD_MYDIALOG”,“Caption”框中写“模式对话框”。
• (4)给对话框创建类:双击对话框的任何位置,弹出“Adding a Class”对话框,选中“Create a new class”单选按钮,单击“OK” 按钮,弹出“New Class”对话框,在“Name”文本框中输入类名 “CMyDlg”,单击“OK”按钮,这样就建成了对话框类CMyDlg。
时令其进入活动状态 • dlg->ShowWindow(SW_RESTORE); //显示窗口 •} • (7)编译运行,结果如图3.2 所示。对话框弹出后,一直保留在屏
幕上,用户可继续在应用程序中进行其他操作。在应用程序菜单上多 次单击“无模式对话框”,将会在文档窗口弹出多个对话框;还可以 拖动这些对话框。
上一页 下一页 返回
3.1 对话框的使用
• (4)创建一个顶层菜单,ID 为:ID_DLG,名字为:无模式对话框 (&W)。
• (5)在视图类头文件CMyView.h 前面的 “#endif//_MSC_VER>1000”语句下面加文件包含:#include “Dlg.h”。
• 在该文件的public 下加:CDlg *dlg;//定义对话框类指针对象 • (6)将菜单消息ID_DLG 映射到视图类CMyView 中,并添加下列代
• Visual C++ 6.0 提供的对话框编辑器能“可视”地进行设计、编辑对 话框,并可用ClassWizard 为对话框从CDialog 基类中派生一个类; MFC 的CDialog 类封装了用于对话框的显示、关闭等操作的许多功 能函数,例如:DoModal 函数用来显示模式对话框并返回用户操作 的结果。在Visual C++ 6.0 应用程序中,使用一个对话框的一般过程 是:
码: • CMyView::OnDlg() • { dlg=new CDlg(this); //从称为堆栈的一块自由存储区中为程序分配
一块sizeof(类型名) • //字节大小的内存空间,该内存空间的首地址被存于指针变量中。这
里为对话框类的首地址。
上一页 下一t;Create(IDD_DIALOG1); //从资源中创建一个非模式对话框, • //Create 是基类Cdialog 的成员函数 • //下面参数SW_RESTORE 是用原来的大小和位置显示一个窗口,同
上一页 下一页 返回
3.1 对话框的使用
• 说明: • 程序中ShowWindow(SW_RESTORE))是显示窗口函数,其各参
数宏的意义如下: • ① SW_RESTORE:用原来的大小和位置显示一个窗口,同时令其
应的操作,在退出对话框之前,对话框所在的应用程序不能继续执行。 平常所见到的对话框大多是模式对话框。建立模式对话框的步骤有以 下几步。 • (1)创建一个SDI(单文档)应用程序,名为“模式对话框”。 • (2)创建对话框模板:选择“Insert”→“Resource”,在出现的 “Insert Resource”对话框中选中“Dialog”,单击“New”按钮,在 文档窗口中出现了对话框模板。 • 在控件工具栏上用鼠标左键单击静态文本(Aa)控件不放,移动到 对话框上的合适位置,放开,静态文本(Aa)控件就添加到对话框 上了。右键单击这个静态文本控件,便弹出快捷菜单,单击 “properties”(属性),弹出属性对话框,在“Caption”(标题) 框中写“新建模式对话框”,关闭属性对话框,“新建模式对话框” 字样就显示在这个静态文本控件上了。