没有合适的资源?快使用搜索试试~ 我知道了~
首页MFC_对话框和常用教程.doc
MFC_对话框和常用教程.doc
5星 · 超过95%的资源 需积分: 13 11 下载量 142 浏览量
更新于2023-03-16
评论
收藏 525KB DOC 举报
MFC_对话框和常用教程.doc对话框是Windows应用程序中最重要的用户界面元素之一,是与用户交互的重要手段,在程序运行过程中,对话框可用于扑捉用户的输入信息或数据。对话框是一个特殊类型的窗口,任何对窗口进行的操作(如:移动、最大化、最小化等)都可在对话框中实施,一般来说,在对话框中通过各种控件(如:按钮、编辑框、列表框、组合框等)来和用户进行交互。
资源详情
资源评论
资源推荐
第五章 对话框和常用控件
对话框是 Windows 应用程序中最重要的用户界面元素之一,是与用户交互的重要手
段,在程序运行过程中,对话框可用于扑捉用户的输入信息或数据。对话框是一个特殊类
型的窗口,任何对窗口进行的操作(如:移动、最大化、最小化等)都可在对话框中实施,
一般来说,在对话框中通过各种控件(如:按钮、编辑框、列表框、组合框等)来和用户
进行交互。控件是在系统内部定义的用于和用户交互的基本单元。
一、对话框的使用
Visual C++提供的对话框编辑器能“可视”地进行设计、编辑,并可用
ClassWizard 为对话框从 CDialog 基类中派生一个类,MFC 的 CDialog 类封装了用于对话
框的显示、关闭等操作的许多功能函数,例如:DoModal 函数用来显示模式对话框并返回
用户操作的结果。
1、模式对话框(为 186 附加举例页)
所谓模式对话框是指,当对话被弹出时,用户必须在对话框中进行相应的操作,在退出
对话框之前,对话框所在的应用程序不能继续执行。平常我们所见到的对话框大多是模式
对话框。
例:模式对话框(通过菜单命令弹出)
1) 建一个单文档(SDI)应用程序
2) 创建对话框模板
InsertResource选中 Dialog单击 New
拖过一个静态文本,鼠标对准它,按右键点 properties 改标题为“新建模式对话框”。
3 ) 鼠 标 右 键 对 准 对 话 框 的 任 何 位 置 单 击 , 选 择 properties 选 项 , 设 置 ID 为
IDD_MYDIALOG
4)给对话框创建类
双击新建对话框的任何位置,单击 OK,写类名为“CMyDlg”,保
证”CDialog”作为该类的基类。
5)创建菜单命令:
a) 打开资源编辑器的菜单项 Menu
b) 双击 IDR_MAINFRAME
c) 双击右边空白菜单,点开 pop_up(让它是空白),在名字处写”弹出对话框
(&A)”,ID 处写 ID_PUPDIALOG
6)将菜单命令连接到主框架程序中,完成 ID_PUPDIALOG 的消息映射:
ViewClassWizard保证 Class name 里是 CMainFrame,在 ObjectIDs
里找到 ID_PUPDIALOG 点黑Messages 里(右边)点 COMMAND 建立主框架对象方法
并加代码:
void CMainFrame::OnPupdialog()
{ CMyDlg MyDlg;
MyDlg.DoModal(); //DoModal()是 CDialog 类成员函数,通过调用该
//函数将显示对话框。
}
7)在 CMainFrame.cpp 文件里加:
#include “MyDlg.h” // 之后运行。
2、无模式对话框(为 186 附加页)
非模式对话框,弹出后,可一直保留在屏幕上,用户可继续在应用中进行其它操作或
启动其它应用程序,当需要使用对话框时,只需象激活一般窗口一样激活对话框即可。
1)建一个 SDI(单文档)应用程序
2)创建对话框模板
InsertResource点黑 DialogNew
拖过一个静态文本,鼠标对准它,按右键点 properties 改标题为“新建非模式对话框”。
3)为对话框创建类
点出对话框(IDD_DIALOG1 缺省的 ID 号),双击对话框中的任意位置,出现一个表,
你点 OK出现一个对话框,你写类名:CDlg 保证基类为 CDialog
4)创建菜单
打开工作区MenuIDR_MAINFRAME双击空白菜单写“非模式对话框”关闭再点
下面空菜单写名字“显示非模式对话框”ID 处写 ID_DLG.
5) 添加菜单命令消息
WiewClassWizardMessage Maps保证 Class name 里是 Wiew 类(视图类),在
Object IDS 里找到 ID_DLG(菜单的 ID)点黑右边 COMMAND 双击它OK
6)a、你在 Wiew.h 里加:#include “Dlg.h”
b、在 public:里加:CDlg *dlg;//创建 CDlg 对象
c、在 View.cpp 的 OnDlg()函数里加:
CMyView::OnDlg()
{
dlg=new CDlg(this);
dlg->Create(IDD_DIALOG1);//使对话框摸板从资源中创建一个非
//模式对话框
dlg->ShowWindow(SW_RESTORE);//显示对话框
}
二、使用对话框编辑器(对话框编程)(187 页)
*1、可建一个单文档应用程序名为“对话框编程”,在此程序中加入一个对话框:
InsertResource点黑 Dialognew 出现 188 页的图
2、拖入一些控件,对这些控件进行排序、布局、大小调整、上下对齐、测试等。*最后在
对话框 IDD_DIALOG1 上留一个按钮控件,其标识符为:IDC_BUTTON1
3、识别控件工具栏(188 页)
4、在加对话框时,InsertResource点开+Dialog 见有 7 类对话框,分别了解其
不同用途(见 192 页)。
5、对话框的属性
A、ViewProperties B、按 Alt+Enter C、用鼠标右键单击对话框模板Properties
都能弹出对话框的属性框,见书 193 页对属性 General 的解释。
*6、为对话框添加类(194 页)
对准对话框的任意非控件区域双击鼠标,将弹出书 194 页图 5.11 所示
的对话框,询问是否为对话框资源创建一个新类单击 OK弹出书 194 页
图 5.12 所示的对话框你定义一个新类的名字如:CMyDlg(注意:类名必
须以 C 打头),下面的基类 Base class 和 ID 标识符 Dialog ID 内容一般不改。
* 7、添映射消息(195 页)
接上,点 OK 出现“MFC ClassWizard”对话框,如书 195 页图 5.13 所示(保证类名处是
CMyDlg)选定点黑 IDC_BUTTON1单击 BN_CLICKED 消息 Add Function 出现书
195 页图 5.14 对话框OKEdit Code
*8、添加用户代码(195 页)
接上,到 MyDlg.cpp 文件中,写:
void CMyDlg::OnButton1()
{
MessageBox(“欢迎进入对话框的设计!”);
}//这时运行还不见对话框,接下
*9、在程序中使用对话框(196 页)
由于对话框的代码是以类为模块来设计的,使用时需要在程序中加入该类
的头文件,并定义一个类对象,然后就可以使用该类的相关成员。
项目工作区FileView打开应用程序的.cpp 文件,在前面加:
#include “MyDlg.h”
在 InitInstance 函数体中的 return TRUE 语句之前添加下列代码:
CMyDlg dlg;
dlg.DoModal();//DoModal()函数是负责对话框的显示和终止。
运行!则直接显示出对话框,单击按钮则出现“欢迎进入对话框的设计”
的字样。
本例建的 CMyDlg 类及以后在各个项目中建立的类,在文档、视图、主框
架类中都可同样使用。
(1)添加对话框资源
对话框资源类型:
IDD_DIALOGBAR 对话条,往往和工具条放在一起。
IDD_FORMVIEW 一个表状风格的对话框,用于无模式对话框或视图类
IDD_OLE_PROPPAGE_LARGE 一个大的 OLE 属性页
IDD_OLE_PROPPAGE_SMALL 一个小的 OLE 属性页
IDD_PROPPAGE_LARGE 一个大属性页,用于属性对话框
IDD_PROPPAGE_MEDIUM 一个中等大小的属性页,用于属性对话框
IDD_PROPPAGE_SMALL 一个小的属性页,用于属性对话框
(2)改变对话框的属性
ID 框:修改或选择对话框的标识符名称
Caption 框:输入对话框的标题名称,中英文均可。
Font 按钮:单击此按钮可选择字体的种类(如宋体)及尺寸(如 9 号)
Xpos/Ypos:对话框左上角在父窗口中的 X,Y 坐标都为 0 时表示居中
Menu 框:默认值为无,当对话框需要选单时输入或选择指定的选单资源
Class name:默认值为无,它提供 C/C++语言编程时所需要的对话框类名,对
MFC 类库的资源文件来说,该项不被激活
三、控件的创建和使用方法(197 页)
控件是在系统内部定义的能够完成特定功能的控制程序单元。在应用程序中使用控件
不仅简化了编程,还能完成常用的各种功能。为了更好地发挥控件的作用,用户还必须理
解和掌握控件的属性、消息以及创建和使用方法。
注:控件工具栏及各按钮含义:
1、 控件的选择 2、静态文本 3、组框 4、复选框 5、组合框 6、水平滚动条
7、旋转按钮 8、滑动条 9、列表视图 10、标签 11、复合编辑 12、月历
13、用户定制工具 14、静态图片 15、编辑框 16、按钮 17、单选框 18、列表框
19、垂直滚动条 20、进展条 21、热键 22、树形视图 23、动画 24、日期选择
25、IP 地址 26、组合框的扩展(从左边往下数,再从右边往下数)
1、控件的创建和使用方法(197 页)
控件的创建方法有 2 种:1)是在对话框摸板中用编辑器指定控件,也就是说,将控件
的父窗口指定为对话框,如:上面的 BUTTON1 按钮控件。2)是将控件看做任意一窗口
的子窗口,并通过调用相应的 Create 函数来创建。下面我们用第 2 种方法创建控件(此种
方法涉及的内容复杂,也不能发挥对话框编辑器可视化编程的优点,故不提倡此种方法,
而用第一种方法)。
(1)打开上个项目,在 CMyDlg 类的头文件 MyDlg.h 里添加一个按钮类 CButton
指针变量:(public:里)
CButton *m_btnWnd;
(2)按 Ctrl+W 或 ViewClassWizard 打开 MFClassWizard 对话框,并切换到
Message Maps 页面,在 Object IDs 列表中选定点黑 CMyDlg 项,并在
Message 列表中找到 WM_INITDIALOG 消息点黑AddFunctionEditCode
(3)添加代码:
BOOL CMyDlg::OnInitDialog()
{ -----
m_btnWnd=new CButton();//构造按钮控件
//下面“”按钮上的字,创建子窗口|窗口最初是可见的|创建的是按键按钮
m_btnWnd->Create(“你好”,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(20,20,120,60),this,201);//创建
CFont *font=this->GetFont();//获取对话框的字体
m_btnWnd->SetFont(font);//设置控件字体
return TRUE;//(程序原有的)
}
代码中,Create 用来创建一个按钮控件,该函数的第一个参数用来指定该按钮的标题,
第二个参数用来指定控件的风格,第三个参数用来指定它在父窗口中的位置和大小,第四
个参数用来指定父窗口指针,最后一个参数是指定该控件的标识值。
WS_CHILD 表示按钮是作为对话框的一个子窗口来创建的。
WS_VISIBLE 是使控件可见。
BS_PUSHBUTTON 表示创建的是按键按钮。
(4)编译并运行
2、控件的数据交换和数据效验(数据成员)(198 页)
使用 ClassWizard 可以很容易地定义一个控件的成员变量及其数据范围。例如:上面的
CMyDlg 类的按钮控件 IDC_BUTTON1 添加并使用其成员变量 m_MyBtn,步骤如下:
(1)打开上例项目,ViewClassWizardMember Variables选定 Class name
中为 CMyDlg,然后在 Control IDs 列表中点黑 IDC_BUTTON1AddVariable
(或双击鼠标左键),弹出 Add Member Variable 对话框,如书 198 页图 5.17
写好数据成员名:m_MyBtn 下面 Category 和 Variables type 里的不动
OK见表上已建成(如:书 199 页图 5.18)
下面是建成员变量的三个对话框图:
剩余41页未读,继续阅读
YUAN_DETECTION
- 粉丝: 3
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 2023年中国辣条食品行业创新及消费需求洞察报告.pptx
- 2023年半导体行业20强品牌.pptx
- 2023年全球电力行业评论.pptx
- 2023年全球网络安全现状-劳动力资源和网络运营的全球发展新态势.pptx
- 毕业设计-基于单片机的液体密度检测系统设计.doc
- 家用清扫机器人设计.doc
- 基于VB+数据库SQL的教师信息管理系统设计与实现 计算机专业设计范文模板参考资料.pdf
- 官塘驿林场林防火(资源监管)“空天地人”四位一体监测系统方案.doc
- 基于专利语义表征的技术预见方法及其应用.docx
- 浅谈电子商务的现状及发展趋势学习总结.doc
- 基于单片机的智能仓库温湿度控制系统 (2).pdf
- 基于SSM框架知识产权管理系统 (2).pdf
- 9年终工作总结新年计划PPT模板.pptx
- Hytera海能达CH04L01 说明书.pdf
- 数据中心运维操作标准及流程.pdf
- 报告模板 -成本分析与报告培训之三.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2