c++学习指导对话框和常用控件
对话框和控件
10.1 10.2 10.3 10.4 习题 对话框和控件的基本概念 使用AppWizard开发MFC应用程序 基本控件 通用对话框
10.1.1 对话框的基本概念
在MFC中,对话框的功能被封装在了CDialog类中, CDialog类是CWnd类的派生类。 有模式对话框垄断了用户的输入,当一个有模式对 话框打开时,用户只能与该对话框进行交互,而其 它用户界面对象收不到输入信息。 无模式对话框类似普通的Windows窗口,在无模式 对话框打开时,用户可以同时打开其它窗口对象, 操作完毕后,又可用鼠标或其它方式激活该窗口。
出现“Add Member Function”对话框,在这里可以
输入成员函数的名称,系统默认的函数名为 OnButton1。
1 控件的消息及消息映射
(5)单击[OK]按钮,在MFC ClassWizard的“Member functions”列表中将列出新增加的成员函数。 在此成员函数中添加下列代码: void CEx_DlgCtrlsDlg::OnButton1() { MessageBox("你按下了\"Button1\"按钮!"); } (6) 编译并运行,当单击[Button1]按钮时,就会执行 OnButton1函数,弹出一个消息对话框。这就是按钮 BN_CLICKED消息的映射过程,其他控件的消息也可以类 似操作。
10.3 基本控件
控件的选择 静态文本 组框 复选框 组合框 水平滚动条 旋转按钮 滑动条 列表视图 标签 复合编辑 月历 用户定制工具 静态图片 编辑框 按钮 单选框 列表框 垂直滚动条 进展条 热键 树形视图 动画 日期选择 IP地址 组合框的扩展
图10.11 基本控件
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。
6vc对话框与控件
例如
UpdateData(TRUE); //对于值变量,控件中的值传递变量 UpdateData(FALSE); 控件窗口指针 CEdit *pEdFirst=(CEdit *) GetDlgItem(ID_FIRSTNAME);
10
前一页
休息
6 对话框与控件
信息技术学院
综合示例一 ----模式对话框与无模式 对话框的编程(口令对话框)
休息
6 对话框与控件
信息技术学院
6.1.4 控件的创建与使用p164-168
步骤如下: 将控件添加到对话框模板中 在对话框类中增加与控件相关联的数据成员 根据需要在对话框类中定义处理这些数据的成员变 量 在对话框的OnInitDialog函数体中,为控件设置一 些初始条件 m_MyBtn.SetWindowText("欢 迎"); 在对话框的控件消息处理函数中,添加控件处理代 码 9
信息技术学院
6.1.2 使用对话框编辑器
添加、选取、删除对话框控件; 改变控件的Tab键次序; 利用基准线、标尺及布局工具进行控件的布 局; 测试所编辑的对话框的性能。
7
前一页
休息6 对话框与控件 Nhomakorabea信息技术学院
对话框编程步骤
p160-164
添加对话框资源
在单文档项目MyHello中,Insert-〉resourc(ctrl+R)-〉Dialog
BOOL CMyHelloApp::InitInstance() { …… CPasswordDialog Dlg; //声明CPasswordDialog类的对象 if(Dlg.DoModal() != IDOK) return false;//用户按下的不是" 确认"按钮 模式对话框的调用 if(Dlg.m_Password != "123456") //口令设为字符串"123456" {AfxMessageBox("口令错误,确认后将退出程序"); return false; } return TRUE; 在MyHello.cpp头部加入包含语句 } #include”PasswordDialog.h” 20
vc++第5章对话框与控件
(6) SendMessage
�
� � �
利用Platform SDK(software development kit )的SendMessage函数, 通过发送WM_GETTEXT消息获取前两个编辑 框控件的文本。 将文本转换为相应的数值并完成加法计算 将结果转换为相应的字符串 再发送WM_SETTEXT消息,设置第三个编辑 框的实现代码。
第五章(1) 对话框与控件
贾澎涛 pengtao.jia@
1. 常用控件介绍
� � � � � � � � � �
静态文本框(Static Text) 图形控件(Picture) 编辑框(Edit Box) 按钮(Button) 复选框(Check Box) 单选按钮(Radio Button) 组框(Group Box) 列表框(List Box) 组合框(Combo Box) 滚动条(Scroll Bar)
(3) GetDlgItemInt和 SetDlgItemInt
int num1, num2, num3; num1 = GetDlgItemInt(IDC_EDIT1); num2 = GetDlgItemInt(IDC_EDIT2); num3 = num1 + num2; SetDlgItemInt(IDC_EDIT3,num3)
(4)将控件和整型变量相关联
�
利用ClassWizard为编辑框添加映射变 量(类的整型成员变量)。 UpdateData(); m_num3 = m_num1 + m_num2; UpdateData(FALSE);
(5) 将控件和控件变量相关联
�
利用ClassWizard为编辑框添加映射变量(类的控件类型 成员变量) int num1, num2, num3; char ch1[10], ch2[10], ch3[10]; m_edit1.GetWindowText(ch1,10); m_edit2.GetWindowText(ch2,10); num1 = atoi(ch1); num2 = atoi(ch2); num3 = num1 + num2; itoa(num3,ch3,10); m_edit3.SetWindowText(ch3);
第7章对话框及常用控件
Visual C++程序设计教程
电脑基础· 实例· 上机系列丛 清华大学出版社
Visual C++程序设计教程
无模式对话框
当无模式对话框出现时,应用程序的主 窗口仍然可以操作,在主窗口可继续进 行编辑操作。当需要使用对话框时,只 需像激活一般窗口一样单击对话框所在 的区域即可。 MFC提供了CDialog对话框类,它同时 支持这两种类型的对话框。
Visual C++程序设计教程
编辑框
Text属性是编辑框最重要的属性,因为要显 示的文本就包含在Text属性中。默认情况下, 最多可在一个编辑框中输入2048个字符。如 果将MultiLine属性设置为True,则最多可输 入32KB的文本。行时用代码设置 或通过用户输入来设置。在运行时通过读取 Text属性可以获得编辑框的当前内容。
清华大学出版社
Visual C++程序设计教程
利用AppWizard建立对话框
利用 AppWizard 建立对话框
电脑基础· 实例· 上机系列丛
清华大学出版社
Visual C++程序设计教程
创建对话框
在SDI或MDI方式下,单击项目工作区窗 口中的“ResourceView”选项卡,展开 “Dialog”选项,可在里面手动添加用户自 定义对话框。 下面举例介绍如何在SDI界面下创建一个对 话框。 【例7-1】 利用SDI方式为【例6-10】增加一 个对话框。(光盘:\第7章\例7_1~7_2)
任务4 对话框与常用控件编程
任务4 对话框与常用控件编程一、综合课程实习目的1.掌握模式对话框的创建与使用。
2.掌握常用控件的使用方法。
3.熟悉通用对话框和消息对话框.。
4.熟悉GDI绘图对象的使用二、综合课程实习内容创建一个MFC应用程序ControlUse,进行学生数据的显示。
三、综合课程实习指导1.创建一个MFC(基于对话框)的应用程序ControlUse2.在对话框中加入控件,如上图所示。
对话框的消息处理函数:首先针对学生信息的消息处理:初始化列表:OnButtonInit()添加代码:void CControlUseDlg::OnButtonInit(){// TODO: Add your control notification handler code hereDWORDdwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRA GDROP|LVS_EX_ONECLICKACTIV ATE;m_ListCtrl.ModifyStyle(0,LVS_REPORT|LVS_EX_ONECLICKACTIVA TE);m_ListCtrl.SetExtendedStyle(dwExStyle);m_ListCtrl.SetTextColor(RGB(200,200,0));m_ListCtrl.SetBkColor(RGB(240,247,233));m_ListCtrl.InsertColumn(0,"学号",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(1,"姓名",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(2,"性别",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(3,"系部",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(4,"党员",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(5,"数学",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(6,"英语",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(7,"总分",LVCFMT_CENTER,65,0);m_scoremath="0";m_scoreenglish="0";UpdateData(false);}“<<添加数据”按钮void CControlUseDlg::OnButtonAdd(){// TODO: Add your control notification handler code hereUpdateData(true);int nIndex=m_ListCtrl.GetItemCount();if(m_sNO== "" ){MessageBox("请输入学号!",NULL,MB_OK);GetDlgItem(IDC_EDIT_NO)->SetFocus();return;}if(m_Name== "" ){MessageBox("请输入姓名!",NULL,MB_OK);GetDlgItem(IDC_EDIT_NAME)->SetFocus();return;}else{CString strtemp;m_ListCtrl.InsertItem(nIndex,m_sNO);m_ListCtrl.SetItemText(nIndex,1,m_Name);if(m_iSex==0)strtemp="男";elsestrtemp="女";m_ListCtrl.SetItemText(nIndex,2,strtemp);m_comDept.GetWindowText(strtemp);m_ListCtrl.SetItemText(nIndex,3,strtemp);if(m_bParty==true)strtemp="是";elsestrtemp="否";m_ListCtrl.SetItemText(nIndex,4,strtemp);m_ListCtrl.SetItemText(nIndex,5,m_scoremath);m_ListCtrl.SetItemText(nIndex,6,m_scoreenglish); }m_sNO=m_Name="";m_comDept.SetCurSel(-1);m_bParty=false;m_scoremath="0";m_scoreenglish="0";UpdateData(false);}“<<修改数据”按钮void CControlUseDlg::OnButtonEdit(){// TODO: Add your control notification handler code here UpdateData();int nItem=m_ListCtrl.GetNextItem(-1,LVNI_SELECTED); if(nItem!=-1){CString strtemp;m_ListCtrl.SetItemText(nItem,1,m_Name);if(m_iSex==0) strtemp="男";else strtemp="女";m_ListCtrl.SetItemText(nItem,2,strtemp);m_comDept.GetWindowText(strtemp);m_ListCtrl.SetItemText(nItem,3,strtemp);if(m_bParty==true) strtemp="是";else strtemp="否";m_ListCtrl.SetItemText(nItem,4,strtemp);m_ListCtrl.SetItemText(nItem,5,m_scoremath);m_ListCtrl.SetItemText(nItem,6,m_scoreenglish);}else{MessageBox("请选中一条记录!");}m_sNO=m_Name="";m_comDept.SetCurSel(-1);m_bParty=false;m_scoremath="0";m_scoreenglish="0";UpdateData(false);}“×删除数据”按钮void CControlUseDlg::OnButtonDel(){// TODO: Add your control notification handler code hereint nItem=m_ListCtrl.GetNextItem(-1,LVNI_SELECTED);if(nItem!=-1){m_ListCtrl.DeleteItem(nItem);}m_sNO=m_Name="";m_comDept.SetCurSel(-1);m_bParty=false;m_scoremath="0";m_scoreenglish="0";UpdateData(false);}“总分”按钮void CControlUseDlg::OnButtonSum(){// TODO: Add your control notification handler code hereint nIndex=m_ListCtrl.GetItemCount();for(int i=0;i<nIndex;i++){int sum=0;sum=sum+atoi(m_ListCtrl.GetItemText(i,5))+atoi(m_ListCtrl.GetItemText(i,6));CString s1;s1.Format("%d",sum);m_ListCtrl.SetItemText(i,7,s1); }}修改之前列表控件必须选中一行才能修改,所以列表控件有OnClickList1消息,该消息代码如下:void CControlUseDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult){// TODO: Add your control notification handler code hereint nItem=m_ListCtrl.GetNextItem(-1,LVNI_SELECTED);if(nItem!=-1){m_sNO=m_ListCtrl.GetItemText(nItem,0);m_Name=m_ListCtrl.GetItemText(nItem,1);CString str;str=m_ListCtrl.GetItemText(nItem,2);//MessageBox(str);if(str=="男") m_iSex=0;else m_iSex=1;str=m_ListCtrl.GetItemText(nItem,3);m_comDept.SetWindowText(str);str=m_ListCtrl.GetItemText(nItem,4);if(str=="是") m_bParty=true;else m_bParty=false;m_scoremath=m_ListCtrl.GetItemText(nItem,5);m_scoreenglish=m_ListCtrl.GetItemText(nItem,6);}UpdateData(false);*pResult = 0;}四、实验任务1.进行合法性输入判断,如图所示。
VisualC6.0实例教程第3章对话框与控件
目录
• 对话框基础 • 标准控件 • 非标准控件 • 对话框的使用 • 控件的使用 • 实例解析
01
对话框基础
对话框的概念
01
对话框(Dialog)是一种弹出式窗 口,用于在用户与应用程序之间进 行交互。
02
对话框通常包含一组控件,如按 钮、文本框、列表框等,供用户 输入或选择数据。
控件的编辑
控件创建后,可以通过属性窗口或代码来编 辑其属性,如位置、大小、字体等。
控件的属性设置
控件的基本属性
包括控件名称、位置、大小、可见性等。
控件的扩展属性
包括字体、颜色、边框样式等,可以通过属 性窗口或代码进行设置。
控件的事件处理
要点一
控件的事件
控件在用户交互时会产生一系列事件,如单击、双击、鼠 标移动等。
对话框的分类
模态对话框
模态对话框在关闭之前会阻止用 户与其他窗口交互。
非模态对话框
非模态对话框允许用户在不关闭 对话框的情况下与其他窗口交互 。
对话框的设计原则
01
02
03
明确性
对话框的设计应清晰明了, 易于理解。
可用性
对话框应易于使用,避免 不必要的复杂性。
一致性
对话框的风格和布局应与 应用程序的整体风格保持 一致。
复杂对话框实例
总结词
通过一个复杂的对话框,学习如何实现更高级的对话框 功能,如自定义对话框样式、添加控件和处理控件事件 等。
详细描述
创建一个复杂的对话框,包括添加按钮、文本框、列表 框等控件,并编写代码以处理用户与控件的交互事件。 通过这个实例,可以掌握更高级的对话框使用技巧。
轻松学VisualC之常用控件介绍
单选框按钮例子
下面举个单选框的小例子,实现单击“查询” 按钮弹出用户所选择的职业。
5.4 复选框按钮
复选框按钮(Check Box)也是Windows提 供的又一种很常见的按钮。但是使用的时候不 需要像单选按钮那样进行分组。可以使用复选 按钮,从一组选项中选择一个选项或多个选项, 各个选项之间的选中状态互不相关。本节也只 介绍复选框最常用的操作,其它一些属性或控 件类型变量的使用可根据前几节介绍的方法自 己尝试或查看相应的帮助文档。
第5章 常用控件介绍
控件是Windows应用程序的图形界面的重要组成 部分,用户可以通过控件完成与应用程序的交互。 控件其实在MFC中是对数据和方法的封装,当然 控件就有自己的属性和方法。在MFC中,所有的 控件都是由CWnd类派生来的,所以控件可以作 为对话框的子窗口而创建。本章以对话框程序为 基础介绍一些基本和常用的控件,学习掌握 Windows控件一般的使用方法和步骤。
5.3 单选按钮
使用单选按钮(Radio Button)从一组选 项中选择唯一一个选项,当我们在填写表格 时经常会用到。例如,在一组职业中选择你 的职业等。本节讲解单选按钮最常用的操作 及一些特点。
单选按钮的特点及其应用
单选按钮(Radio Button)不同于前面讲的 那些控件,它有自己一套独特的操作方式。 单选按钮通常以组的方式呈现,在组中选择 符合要求的那个选项。
输入
信息是否已存在
N
插入
选择
Y
调整顺序
显示
5.7 列表视图控件
在5.5节讲过列表框,列表视图可以当做是 功能增强型的列表框。列表视图控件可以很 好的用来显示项目元素,在编写数据库软件 时也经常会用到。在Windows系统中文件 夹目录也是以列表视图呈现。
对话框和控件
对话框的使用—添加对话框资源
❖ 在一个MFC应用程序中添加对话框资源,通常按下列步骤进行: ❖ (1)选择“插入”->“资源”,或按快捷键Ctrl+R打开“插入资源”对话框,
在对话框中可以看到资源列表中存在Dialog项,展开该项可以看到对话框资源 的不同类型选项。
对话框的使用—添加对话框资源
类型
对话框的使用——添加和布局控件
❖ 控件的布局
注意: (1)大多数布置控件的命令使用前,都需要用户选取多个控件,且 “主要控件”起到了关键作用。举例说明。 (2)为了便于用户在对话框内精确定位各个控件,系统还提供了网格、 标尺等辅助工具。
对话框的使用——创建对话框类
❖ 在对话框资源模板的空白区域内双击鼠标,将弹出“Adding a Class”对话框,询问是否为对话框资源创建一个新类。举 例说明。
对话框和常用控件
❖ 对话框的使用 ❖ 控件的创建和使用方法 ❖ 常用控件 ❖ 通用对话框和消息对话框
对话框的使用
在VisualC++6.0应用程序中,使用一个对话 框的一般过程是: 添加对话框资源 设置对话框的属性 添加和布局控件 创建对话框类 添加对话框代码 在程序中调用对话框
对话框的使用
❖ 资源与资源标识 Visual C++6.0将Windows应用程序中经常用 到的菜单、工具栏、对话框、图标等都视为 “资源”,并将其单独存放在一个资源文件 中。每个资源都由相应的标识符来区分,并 且可以像变量一样进行赋值。
nIDCheckButton); ❖ int GetCheckedRadioButton(int nIDFirstButton,int nIDLastButton); ❖ 其中,nIDFirstButton和nIDLastButton分别指定这组单选按钮的第一个
VC++第7章 对话框和控件
UpdateData()的用法: 当调用UpdateData(TRUE)时,MFC通过调用 DDX函数将数据从控件传递到关联的成员变量; 当 调 用 UpdateData(FALSE) 时 , MFC 通 过 调 用 DDX函数将数据从成员变量传递到关联的的控件。 利用UpdateData()函数实现了在刷新后重新获取成 员变量。
7.1 对话框概述
就用户交互输入功能而言,菜单和工具栏的功
能是极其有限的。而对话框除了用来显示提示 信息(如程序启动时显示版权和运行进度信息), 一个主要功能是用于接收用户的输入数据。
在MFC中,对话框的功能被封装在CDialog类中,
而CDialog类是CWnd类的派生类。作为窗口, 对话框和其它窗口一样具有窗口的一切功能。
有关对话框的常用处理函数
CDialog::CDialog() 通过调用派生类构造函数,根据对话框资源模板定义一 个对话框。 CDialog::DoModal() 激活模态对话框,显示对话框窗口。 CDialog::Create() 根据对话框资源模板创建非模态对话框窗口。如果对话 框不是Visible属性,还需通过调用CWnd::ShowWindow()函 数显示非模态对话框窗口。 CDialog::OnOk() 单击OK按钮时调用该函数,接收对话框输入数据,关 闭对话框。 CDialog::OnCancel() 单击Cancel按钮或按Esc键时调用该函数,不接收对话框 输入数据,关闭对话框。
case
}
7.2 使用对话框
为了在屏幕上显示对话框: (1)首先需要建立对话框资源及其与资源相 关的对话框类; (2)然后添加控件、与控件关联的成员变量 和消息处理函数; (3)最后在程序中显示对话框并访问与控件 关联的成员变量。 在Visual C++中可以利用集成工具如对话框 编辑器和ClassWizard类向导很方便地创建对话框, 不需要程序员手工编写太多的源代码。
VC++对话框和常用控件
3、实现消息映射,添加代码 选择类名CMainFrame(管理菜单),选择ID: ID_PUPDIALOG,在Message中选择COMMAND,通过ADD FUNCTION 建立菜单项“弹出对话框”的消息映射。
在函数中添加如下代码:
在MainFrm.cpp文件中添加如下代码:#include “MyDlg.h” 4、编译运行,单击build/Execute *.exe。结果如下
Visual C++程序设计
12
添加对话框资源
对展开的不同类型的对话框资源不作任何选择,选 中“Dialog”,单击[新建]按钮,系统就会自动为当 前应用程序添加了一个对话框资源,并出现如下图 所示的界面。
添加对话框资源后的开发环境
Visual C++程序设计
控件工具栏
默认标识符
对话框模板
布局工具栏 14
一旦对话框资源被打开或被创建,就会出现对话框 编辑器,通过它可以在对话框中进行控件的添加和 布局等操作。
控件的添加。
对话框编辑器最初打开时,控件工具栏是随之出现 的,利用此工具栏中的各个按钮可以顺利完成控件 的添加。下图说明了各个按钮所对应的控件类型。
Visual C++程序设计
控件的选择 静态文本 组框 复选框 组合框 水平滚动条 旋转按钮 滑动条 列表视图 标签 复合编辑 月历
用户定制控件
静态图片 编辑框 按钮 单选框 列表框 垂直滚动条 进展条 热键 树形视图 动画 日期选择 IP地址 扩展组合框 16
创建对话框类
MFC提供了一系列对话框类,并实现了对话框消息响 应和处理机制。CDialog类是对话框类中最重要的类, 我们在程序中创建的对话框类一般都是CDialog类的派 生类。CDialog类还是其它所有对话框类的基类,其派 生关系如下所示: CObject CCmdTarget CWnd CDialog
对话框和常用控件
2、拖入一些控件,对这些控件进行排序、布局、大小调整、上下对齐、测试等。 最后在对话框 IDD_DIALOG1 上留一个按钮控件, 其标识符为: IDC_BUTTON1 3、识别控件工具栏(188 页) 4、在加对话框时, Insert Resource 点开 +Dialog 见有 7 类对话框,分别了解 其 不同用途(见 192 页)不选择其中任何一个,点黑 Dialog->new 加个对话框。 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( ) {
a) 打开资源编辑器的菜单项 Menu b) 双击 IDR_MAINFRAME c) 双击右边空白菜单,点开 pop_up( 让它是空白) ,在名字处写”弹出 对话框(&A)”,ID 处写 ID_PUPDIALOG 6)将菜单命令代码连接到程序中,完成 ID_PUPDIALOG 的消息映射: View ClassWizard 保证 Class name 里是 CMainFrame , 在 ObjectIDs 里找到 ID_PUPDIALOG 点黑Messages 里(右边)点 COMMAND 建立主框架对象方法: void CMainFrame::OnPupdialog() { CMyDlg MyDlg;
《Visual C++程序设计教程》第四章对话框设计和Windows常用控件
4.1 对话框应用程序介绍
1.对话框组成 对话框主要由以下两部分组成: (1) 对话框资源:定义了对话框的特性(如大小、位 置和风格等)以及对话框中每个控件的类型、位置等 属性。一般情况下,对话框资源在资源编辑器中静 态地定义,也可以用编程的方法在程序运行时动态 地创建。 (2) 对话框类:对话框类是与对话框资源相关联的, 基于CDialog类的派生类,它提供编程接口来管理对 话框。
1.通过资源编辑器添加控件 打开对话框资源编辑器弹出如图48所示的控 件工具栏之后,就可以方便地在对话框中添加 各种控件了。 (1)单击添加:在控件工具栏上单击要添加 的控件后,将鼠标移动到对话框模板上,此时 鼠标光标变成了“+”形状,在对话框上再次单 击鼠标,控件就添加到对话框模板上了。 (2)拖动添加:拖动要添加的控件到对话框 模板上,然后释放鼠标,也可以添加控件。
(2)单击“新建”按钮可以创建一个资源类型列表中指定类 型的新资源;单击“定制”按钮可以创建资源类型列表中 没有的新类型的资源;单击“导入”按钮可以将外部已有 的位图、图标等资源添加到当前应用程序中。 (3)修改对话框属性。在对话框模板的空白处右击,从弹出 的快捷菜单中选择“属性”命令,弹出如图4-3的“对话属 性”对话框。
4.列表框控件(CListBox) 列表框是一种输入控制,它可以使用户从所列的表 项中进行选择。用户可以在其中选择一个或多个项, 这与单选按钮和复选框的功能有些相近,但不同的 是,列表框中项的数目是灵活变化的,程序运行时 可往列表框中添加或删除某些项。并且,当列表框 中项的数目较多不能一次全部显示时,还可以通过 滚动条来拓展显示范围。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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+助记符”组合键即可。
控件的选择 静态文本 组框 复选框 组合框 水平滚动条 旋转按钮 滑动条 列表视图 标签 复合编辑 月历 用户定制控 件 静态图片 编辑框 按钮 单选框 列表框 垂直滚动条 进展条 热键 树形视图 动画 日期选择 IP地址 地址 扩展组合框
图3.5 控件工具栏和各按钮含义
3.1对话框的使用 对话框的使用
这样就可在单文档应用程序Ex_SDI中添加 一个对话框资源,通常按下列步骤进行: (1)选择“插入”→“资源”菜单,或按 快捷键Ctrl+R打开“插入资源”对话框,在对 话框中可以看到资源列表中存在Dialog项,若 单击Dialog项左边的“+”号,将展开对话框资 源的不同类型选项,如图3.1所示,表3.1列出 各种类型的对话框资源的不同用途。
3.1对话框的使用 对话框的使用
(3)对展开的不同类型的对话框资源不作任何选择,选中“Dialog”,单击[新建]按 钮,系统就会自动为当前应用程序添加了一个对话框资源,并出现如图3.2所示的界面。
默认标识 符 对话框模 板 布局工具 栏 控件工具 栏
图3.2 添加对话框资源后的开发环境
3.1对话框的使用 对话框的使用
3.1对话框的使用 对话框的使用
(3)单击[确定]按钮,在出现的“步骤1”对话框中,选择“单个文档”应用程序类 型。 (4)单击[完成]按钮出现一个信息对话框,显示出用户在前面几个步骤中作出的选 择内容,单击[确定]按钮系统开始创建,并又回到了Visual C++ 6.0的主界面。
若无特别说明,以后凡遇到“创建一个默认的单文档应用程序 创建一个默认的单文档应用程序Ex_XXXX”就是指上 创建一个默认的单文档应用程序 述的步骤,本书作此约定。其中,Ex_XXXX为创建的应用程序名。
3.1对话框的使用 对话框的使用
图3.4 对话框属性修改后的界面
3.1对话框的使用 对话框的使用
3.1.3 添加和布局控件 一旦对话框资源被打开或被创建,就会出现对话框编辑器,通过它可以在对话框中进 行控件的添加和布局等操作。 1. 控件的添加 对话框编辑器一旦打开,“控件”工具栏一般都会随之出现。若不出现,则可在开发环境的 工具栏区的空白处右击鼠标,从弹出的快捷菜单中选择“控件”。 利用“控件”工具栏中的各个按钮可以顺利完成控件的添加。图3.5说明了各个按钮所 对应的控件类型。
3.1对话框的使用 对话框的使用
用Tab键选取。在对话框编辑器中,系统会根据控件的添加次序自动设置相应 的Tab键次序。利用Tab键,用户可在对话框内的控件中进行选择。每按一次Tab键依 次 选取对话框中的下一个控件,若按住Shift键,再单击Tab键则选取上一个控件。 对于多个控件的选取,可采用下列方法: ● 先在对话框内按住鼠标左键不放,拖出一个大的虚框,然后释放鼠标,则被 该虚框所包围的控件都将被选取。 ● 先按住Shift键不放,然后用鼠标选取控件,直到所需要的多个控件选取之后 再释放Shift键。若在选取时,对已选取的控件再选取一下,则取消该控件选取。 需要注意的是: (1) 一旦单个控件被选取后,其四周由选择框包围着,选择框上还有几个(通 常是八个)蓝色实心小方块,拖动它可改变控件的大小,如图3.6(a)所示。 (2)多个控件被选取后,其中只有一个控件的选择框有几个蓝色实心小方块,这 个控件称为主要控件 主要控件,而其他控件的选择框的小方块是空心的。如图3.6(b)所示。 主要控件
系统为对话框资源自动赋给它一个默认的标识符名称(第一次为 IDD_DIALOG1,以后依次为IDD_DIALOG2、IDD_DIALOG3、...)。 ● 使用了通用的对话框模板创建新的对话框资源。对话框的默认标题为“对话” (Dialog),有[确定]和[取消]两个按钮,这两个按钮的标识符分别为IDOK和IDCANCEL。 ● 自动出现“对话框资源编辑器”窗口,在这里可以通过“控件工具栏”和“布 局工具栏”向对话框添加和布局控件,并可设置对话框的属性。 需要说明的是,第一次使用Visual C++6.0的对话框编辑器时,“控件工具栏”和 “布局工具栏”可能是浮动,可以将其拖放到指定位置(参看图3.2),以便让开发环境 更易于操作。 3.1.2 设置对话框属性 在对话框模板的空白处右击鼠标,从弹出的快捷菜单中选择“属性”菜单项,出现 如图3.3所示的对话框属性窗口。 可以看出,对话框具有这几类属性:常规(General)、样式(Styles)、更多样式 (More Styles)、扩展样式(Extended Styles)、更多扩展More Extended Styles(更 多扩展样式)等部分,这里仅介绍最常用的常规(General)属性,如表4.2所示。
表3.1 对话框资源类型
类 型 IDD_DIALOGBAR IDD_FORMVIEW IDD_OLE_PROPPAGE_LARG E IDD_OLE_PROPPAGE_SMAL L IDD_ PROPPAGE_LARGE IDD_ PROPPAGE_MEDIUM IDD_ PROPPAGE_SMALL 说 明 对话条,往往和工具条停放一起 一个表单(一种样式的对话框),用于表单视图类 的资源模板 一个大的OLE属性页 一个小的OLE属性页 一个大属性页,用于属性对话框 一个中等大小的属性页,用于属性对话框 一个小的属性页,用于属性对话框
3.1对话框的使用 对话框的使用
4. 测试对话框 “布局”菜单下的“测试”命令或布局工具栏上的测试按钮是用来模拟所编辑的对 话框的运行情况,帮助用户检验对话框是否符合用户的设计要求以及控件功能是否有效 等。 5. 操作示例 (1) 下面来向对话框添加三个静态文本控件(一个静态文本控件就是一个文本标签): (2) 在控件工具栏上,单击 按钮,然后在对话框模板左上角单击鼠标左键不放, 拖动 鼠标至满意位置,释放鼠标键。这样,第一个静态文本控件添加到对话框中了。 (3) 单击布局工具栏上的 按钮,打开对话框模板的网格。 (4) 在控件工具栏上,将 按钮拖放到对话框模板中的左中部。这样,第二个静态 文本控件添加到对话框中了。同样的操作,将第三个静态文本控件拖放到对话框模板中 的左下部。 (5) 按住Shift键不放,依次单击刚才添加的三个静态文本控件,结果如图3.8所示。 在布局工具栏上,依次单击“大小相同”按钮 、“靠左对齐”按钮 、“上下间隔 相等”按钮 ,结果如图3.9所示。
●
(a)
(b)
图3.6 单个控件和多个控件的选择框
3.1对话框的使用 对话框的使用
3. 控件的删除、复制和布局 控件的删除、 当单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的选择框可移动控件。 若在鼠标拖动过程中还按住Ctrl键则复制控件。若按Del键可将选取的控件删除。当然还 有其他一些编辑操作,但这些操作方法和一般的文档编辑器基本相同,这里不再重复。 对于控件的布局,对话框编辑器中提供了控件布局工具栏,如图3.7所示,它可以 自动地排列对话框内的控件,并能改变控件的大小。
第三章对话框和常用控件
3.1 对话框的使用 3.2 控件的创建和使用方法 3.3 常用控件 3.4 通用对话框和消息对话框 3.5 综合应用
3.1对话框的使用 对话框的使用
在Visual C++ 6.0应用程序中,使用一个对话框通常有两种情形:一是直接创建一个 对话框应用程序,二是在一个应用程序中进行调用。为不失一般性,这里介绍第二种对话 框使用情况的一般过程,即依次如下: (1) 添加对话框资源; (2) 设置对话框的属性; (3) 添加和布局控件; (4) 创建对话框类; (5) 添加对话框代码; (6) 在程序中调用对话框。 显然,对于第一种对话框使用情况来说,其过程通常是从(2)到(5)。 3.1.1 添加对话框资源 在对话框资源添加之前,先来创建一个默认的单文档应用程序Ex_SDI: (1)在“D:\Visual C++应用”文件夹中,创建本章应用程序工作文件夹“第3章”。 (2)启动Visual C++ 6.0,选择“文件”→“新建”菜单,在弹出的“新建”对话框 的工程标签页面中,选择MFC AppWizard(exe)的项目类型。单击位置框右侧的按钮,在 弹出的对话框中,将该应用程序的文件夹定位在“D:\Visual C++应用\第3章”,并在工程 编辑框中输入单文档应用程序名Ex_SDI。