欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    对话框和标准控件.ppt

    • 资源ID:6274284       资源大小:1.23MB        全文页数:39页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    对话框和标准控件.ppt

    1,第四章 对话框和标准控件,2,本章内容,对话框概述使用对话框标准控件通用对话框公共控件(略),3,一、对话框概述,对话框是Windows应用程序中常用的I/O界面,是实现人机交互的容器型窗口,对话框总会包含一些功能性控件。控件是嵌入在对话框或其他窗口内的子窗口,用于实际完成数据或信息的I/O。对话框的存在方式有两种:一是作为独立的程序主窗口出现和使用;二是作为普通窗口类程序的弹出式子窗口实现其人机交互功能。从状态上区分,对话框分为“模式对话框”和“非模式对话框”两种。,4,1、MFC的CDialog类CDialog类的成员函数有:CDialog()构造函数,创建对话框对象DoModal()激活并显示模式对话框Create()创建非模式对话框OnOk()与OnCancel()确定与取消按钮的处理函数OnInitDialog()WM_INITDIALOG的消息处理函数EndDialog()关闭模式对话框的函数,5,对话框要实现人机交互,还必须使用CWnd类函数:ShowWindow()显/隐对话框;DestroyWindow()关闭销毁对话框;UpdateData()设置或获取对话框控件的数据GetWindowText()获取对话框窗口的标题SetWindowText()设定对话框窗口的标题GetDlgItemText()获取对话框中控件的文本内容SetDlgItemText()设置对话框中控件的文本内容GetDlgItem()获取控件或子窗口的指针,返回IDEnableWindow()使能或禁用窗口,6,2、MFC为对话框提供了DDX机制以此来自动实现控件与应用程序之间的数据交换的,同时使用DDV机制实现数据合法性的自动验证。DDX全称Dialog Data Exchange;数据交换DDV全称Dialog Data Validation;数据检验,7,3、使用信息/消息对话框程序员在编程时可以直接调用,以下为函数原型:,三个函数依次为:MFC全局函数;API函数;CWnd类的成员函数。AfxMessageBox()和:MessageBox()可以在任何地方使用,而第三种函数只能用于控件、对话框和窗口。lpText表示要在对话框内显示的信息字串;hWnd表示对话框父窗口的指针,可为NULL;lpCaption表示信息框的标题;nType表示对话框的图标与按钮风格;,8,9,二、使用对话框,编程时,对话框由资源模板和对话框类共同组成。1、创建和使用对话框的主要步骤创建对话框模板资源和相关控件;用类向导创建对话框类和与控件相关联的成员变量和消息处理函数;设计程序访问接口来显示对话框并获取与控件相关联的程序数据。,10,对话框在程序中的调用一般由菜单项来完成。由程序显示对话框就需要调用菜单命令的消息处理函数,加入如下通用型代码:CMyDialog myDlg;myDlg.DoModol();而要从对话框中获取相关控件数据的方法是:CMyDialog mydlg;/当对话框内控件接受输入并单击OK键后 If(myDlg.DoModol()=IDOK)appVariableX=dlg.m_nXControlDataMember;,11,对话框的基本工作流程,12,2、创建和使用对话框实例编制一个在客户区画圆的应用程序,要求用对话框来接受用户键盘输入的圆半径参数。步骤(1)为视图类声明成员变量:UINT m_nViewRadius;(2)创建对话框模板(标题:输入半径;ID缺省IDD_DIALOG1)(3)添加两个控件:Static Control:请输入半径;EditBox:IDC_EDIT_RADIUS。(4)双击对话框空白处,为其创建新类CRadiusDlg,并为其核心控件IDC_EDIT_RADIUS创建m_nRadius的UINT类型变量。,13,(5)在程序的“编辑”菜单中添加“输入半径(I)”的菜单命令,并用类向导生成消息映射函数,加入如下定义代码:CRadiusDlg dlg;Dlg.m_nRadius=100;/设置控件初值If(dlg.DoModal()=IDOK)m_nViewRadius=dlg m_nRadius;/接受并存储编辑框内的数据Invalidate();/强制刷新视图(6)在视图类的OnDraw()函数中加入画圆代码:pDC-Ellipse(90,90,m_nViewRadius,m_nViewRadius);(7)在视图类中加入包含语句:#include“RadiusDlg.h”,14,三、标准控件,1、控件概述Windows提供两种控件:标准控件和公共控件。标准控件有:静态控件、编辑框、按钮、列表框、组合框和滚动条。可满足多数UI设计的要求。各控件的功能:静态控件用于提示文字或美工图片;编辑框接受键盘输入信息;按钮中的单选钮提供排他型选择;复选框提供多项选择;列表框以列表方式显示各选项;组合框是编辑框与列表框之集成;滚动条控制文档的显示范围。,15,除标准控件之外,控件工具箱中列示的其他控件基本上都属于公共控件。MFC对控件分别由不同的类来管理。,CStatic静态文本与图片CEdit编辑框CButton组框单选复选框CComboBox组合框CScrollBar滚动条CSpinButtonCtrl旋转钮CProgressCtrl进度条CSliderCtrl滑动条CListBox列表框CListCtrl列表视控件,CTreeCtrl树型列表CTabCtrl标签CAnimateCtrl动画控件CRichEditCtrl复合编辑CDateTimeCtrl日期时间CMonthCalCtrl日历CComboBoxEx扩展组合框CStatusBarCtrl状态条控件CToolBarCtrl工具条控件CImageList图像列表,16,用户对控件的操作将会引发控件事件和消息,消息由其父窗口接收并处理。标准控件和公共控件都能发送WM_COMMANDO类型的消息,后者还可发送WM_NOTIFY通知消息。消息的参数中包含了控件ID和通知码,通知码前缀最后一个字母总为N。比如:BN_CLICKED为按钮单击;EN_UPDATE为编辑框刷新;CBN_SETFOCUS表示组合框获得焦点。,17,2、对话框内控件的组织(1)添加或删除控件添加:鼠标单击、拖放、画框均可;删除:选中后Del键.(2)设置控件属性属性决定外观及风格,通过右键快捷菜单中的属性项设置。常用属性:ID、Caption、Visable、Group、Disabled 和Tab Stop;分别表示识别号、名称标题、是否可见、指定控件组之首控件、初始禁用、Tab键停留。其中,控件的Tab键次序由创建的先后顺序决定,但也可以人为设置,重设的命令为Ctrl+D,或菜单Layout|TabOrder。(3)调整控件大小通过控件周围的编辑句柄调整,选中控件后,其左上角坐标及长宽尺寸便自动显示于状态栏的右侧窗格。只有静态文本控件的尺寸由其Caption字符多少决定。,18,CTRL+D命令可以重置各个控件的Tab键次序,19,(4)控件的多选方法按住Ctrl/Shift键配合鼠标左键;用鼠标拖框圈定目标控件。(5)移动和复制控件方向键及鼠标拖放可以移动控件;按住Ctrl键不放,鼠标拖放目标控件,可复制控件;(6)批量控件编排先多选目标控件,后使用窗底工具栏的工具(在状态栏之上),测试对话框,靠左对齐,靠右对齐,靠上对齐,靠下对齐,垂直居中,水平居中,水平等距离,垂直等距离,宽度相同,高度相等,大小相同,显示网格,显示标尺,20,3、静态控件静态控件用于显示提示字符串或图形信息。包括静态文本(Static Text)、图片控件(Picture Control)和组框(Group Control)三种类型。静态文本:一般只起文字提示作用,不发送任何消息,所以一般不需要特意相互区分,默认ID均为IDC_STATIC。但是,如何有时需要动态改变某一控件的文字信息,就需要为其确立一个唯一的ID。该控件最多只能显示255个字符,且可以以n作用换行符。图片控件:用于显示边框、矩形、图标或位图,对其他相关控件起修饰作用。组框:通常仅用于作为一组控件的外围边界,起圈围和版面划分作用,外型由文本标题和矩形边框组成。,21,4、编辑框控件编辑框(Edit box),又称文本框,是接受用户键盘输入的最常用控件,具有数据消息的接收与输出功能。可接受的消息包括文本、数字或口令,输入时允许进行如文本编辑的一般操作。Edit box的常用属性:Multiline多行输入;Align Text对齐方式;Number只接收数字;PassWord只接受密码口令;ReadOnly信息只读;Border周围边框;Upercase转为大写;Lowercase转为小写;Edit box可发送的常见消息:EN_CHANGE信息改变时;EN_UPDATE信息更新显示前;EN_KILLFOCUS失去焦点时;EN_SETFOCUS得到焦点时;EN_MAXTEXT输入字符超限时。,22,编辑框的应用实例:编写一个名为PassWord的SDI应用程序,要求程序启动后先弹出一用户登录对话框,只有当用户输入正确的口令后方可进入主界面。创建工程,从C盘向工程中任意导入两个图标资源;按图示创建对话框模板,并向其添加相关控件;用类向导创建CPasswordDlg类,并分别为三个核心控件添加CString型的成员变量并限定输入位为6位:m_strUserName;m_strPassword和m_strShowPassword;用类向导为复选框IDC_CHECKSHOW声明Control类型的变量m_ButtonCheck.,23,IDC_EDITSHOWPASS的属性:Read-OnlyIDC_EDITPASS的属性:PasswordIDC_CHECKSHOW的变量为:Control类型,m_ButtonCheck,24,用类向导为口令控件添加EN_CHANGE的消息处理函数OnChangeEditpass(),并加入代码,实现将口令字符向“显示口令”控件的传递和显示。if(m_ButtonCheck.GetCheck()/判断“显示口令”复选框是否选定UpdateData(true);/由控件向程序传递数据m_strShowPass=m_strPassword;/传递口令到显示变量UpdateData(FALSE);/将变量数据向控件传递并显示在程序应用类的初始化函数中显示对话框,并实现用户信息的验证。(代码见下页)编译运行程序。,25,#include“PasswordDlg.h”/本句加至应用类cpp文件的头部int nCount=0;/初始化口令输入次数/本句后加至初始化函数的前半部while(nCount=3)MessageBox(NULL,口令输入超过3次,请退出!,错误信息,MB_OK|MB_ICONERROR);return FALSE;/退出程序,26,5、按钮控件按钮(button)包括按键按钮(Push button)、单选钮(Radio button)和复选框(Check box)三种,均可激发单击、双击或命令消息。PushButton又称命令按钮,最常用。一个对话框内可以给惟一一个PushButton设定Defult属性;按钮具有的Owner Draw属性可以通过调用OnDrawItem()消息函数来重新定制其外观;Icon和Bitmap属性表示可以用指定图标或位图代替文本标题,从而实现所谓“图形按钮”。Radio button由圆圈及文本标题共同组成,用于在一组选项中由用户任选其一项。RadioButton的Auto属性为默认属性;Group属性仅限于本组第一个RadioButton选用,其Tab键次序必须排第1,其ID值可用于在对话框中为控件建立关联的成员变量。Check box由空心方框及文本标题组成,成组时可以多选。调用CButton类的成员GetCheck()和SetCheck()可获得和设置单选钮或复选框的选中状态。,27,按钮控件的联合应用实例:编写一个对话框型应用程序ColrButn,加入两个单选钮用于控制色彩模式,用三个复选框来控制RGB三原色分量,而且只有在“彩色”模式下才能使用RGB复选框,当程序运行后用户单击了“应用”按钮时,右侧的绘制按钮将根据颜色选择实现“按钮自画”。,28,编程的主要步骤:(1)创建基于对话框的程序ColrButn,修改对话框标题,添加相关控件,并设置好控件正确的Tab键次序;注意第1个单选钮和第1个复选框一定要设置Group属性,自画按钮要有“自画”属性;(2)用类向导为单选钮IDC_RADIO_COLOR添加m_nColor的整型变量;为三个复选框依次添加BOOL型的m_bRed、m_bBlue、m_bGreen变量;(3)为两个单选钮分别添加BN_CLICKED消息处理函数,使选择“彩色”时所有复选框可用,选择“单色”时所有复选框禁用,两个函数的核心代码是:CWnd*pWnd;pWnd=GetDlgItem(IDC_CHECK_RED);/获得复选框对象指针pWnd-EnableWindow();/启用复选框;参数为FALSE时禁用,29,(4)为“应用”按钮添加消息处理函数,并加入代码:CWnd*pWnd=GetDlgItem(IDC_BUTTON_DRAW);pWnd-Invalidate();/使自画按钮区无效pWnd-UpdateWindow();/发送WM_PAINT消息,更新无效区域(5)为对话框添加WM_DRAWITEM消息处理函数,先接收单选钮和复选框的变量数据,然后依此重绘“自画按钮”。UpdateData();COLORREF clrBtn;if(m_nColor=0)clrBtn=RGB(m_bRed?255:0,m_bGreen?255:0,m_bBlue?255:0);else clrBtn=RGB(0,0,0);CDC dc;dc.Attach(lpDrawItemStruct-hDC);/连接句柄if(nIDCtl=IDC_BUTTON_DRAW)CWnd*pWnd;pWnd=GetDlgItem(IDC_BUTTON_DRAW);/获得自画按钮对象的指针CRect rc;pWnd-GetClientRect(/分离句柄,30,6、列表框在列表型控件里,包含列表框、组合框、列表视、树视控件4种,其中,List-Box是最简单的一种。它是一个能罗列出一些文本项的窗口,用于显示类型相同的一系列文本信息。List-Box的风格属性:Single、Multiple、Extended(扩展多选)和None(不选)。最常用的是单选,仅允许每次选一项。List-Box的其他属性:Sort按字母顺序排列;Vertical Scroll垂直滚动;Multi-column指定有水平滚动条的多列列表;Want key input表示有输入时向上级窗口发送消息。List-Box常用的通知消息:LBN_SETFOCUS;LBN_KILLFOCUS;LBN_DBCLK;LBN_SELCHANGE分别表示得焦点、失焦点、双击、选项改变。CListBox类的成员函数可实现列表项的添加、删除、修改和获取等操作。AddString();InsertString();DeleteString();ResetContent();FindString();SelectString();GetCurSel();SetCurSel();GetText();GetItemData()。,31,7、组合框组合框(ComboBox)吸收了编辑框与列表框的共同优点,既可显示列表项以供用户选择,也可直接输入新的列表选择项。形态上包含简单组合框(Simple)、下拉组合框(Dropdown)、下拉列表框(DropList)3种。简单组合框是一个列表框和编辑框的组合,尺寸固定,被选中的列表项显示于编辑框之内;下拉组合框多加一个下拉按钮,用于控件列表框的收缩;下拉列表框与前类相似,只是无法使用编辑框。ComboBox的风格属性:在各控件原属性基础上,属性控制页中新增了一个“Data”标签页,用于接受列表项的初始化(用Ctrl+Enter换行)。ComboBox的通知消息:CBN_CLOSEUP和CBN_DROPDOWN:关闭和打开列表框时发送;CBN_SELENDCANCEL:当前选项被取消时发送;CBN_EDITCHANGE和CBN_SELCHANGE:编辑框文字被修改并显示之前和之后发送。其它消息有:得焦点、失焦点、双击列表项。CComboBox类的成员函数:直接继承了CEdit类和CListBox类的成员。,32,组合框编程实例:创建一个名为DynCreateCtrls的SDI程序,用菜单命令调用一个对话框,当用户在组合框中选择一种控件类型并单击“应用按钮”时,实现在对话框内动态创建该控件的效果。,33,编程实现:(1)创建DynCreateCtrls的SDI程序,新建一个IDD_COMBODLG“使用组合框”的对话框,向其添加3个控件:静态文本“请选择控件类型”;组合框IDC_COMBOCTRLNAME和“应用”按钮;(2)用类向导创建对话框类CCombDlg,并为其中的组合框添加两个数据成员:CComboBox m_ComboBx和CString m_strCtrlName;在所创建的CCombDlg类中手工加入CWnd*pWndCtrl的私有型变量;(3)用类向导为CCombDlg类添加WM_INITDIALOG和WM_DESTROY消息映射函数,分别加入初始化和清除代码。pWndCtrl=NULL;return TRUE;/初始化If(pWndCtrl!=NULL)delete pWndCtrl;/删除动态生成的控件对象(4)用类向导为组合框创建SBN_SELCHANGE的消息处理函数,加入代码,34,if(pWndCtrl!=NULL)delete pWndCtrl;/删除上次动态生成的控件对象pWndCtrl=NULL;int nChoice=m_ComboBx.GetCurSel();/获得当前选择项索引switch(nChoice)case 0:/创建静态文本控件pWndCtrl=new CStatic;(CStatic*)pWndCtrl)-Create(_T(Static Text),WS_VISIBLE,CRect(280,40,400,70),this,1);break;case 1:/创建编辑框控件pWndCtrl=new CEdit;(CEdit*)pWndCtrl)-Create(WS_VISIBLE|WS_BORDER,CRect(280,40,400,70),this,2);break;case 2:/创建组框pWndCtrl=new CButton;(CButton*)pWndCtrl)-Create(_T(Group Box),WS_VISIBLE|BS_GROUPBOX,CRect(280,40,400,100),this,3);break;,35,case 3:/创建按键按钮pWndCtrl=new CButton;(CButton*)pWndCtrl)-Create(_T(Button),WS_VISIBLE|WS_DISABLED|BS_PUSHBUTTON,CRect(280,40,400,70),this,4);break;case 4:/创建复选框pWndCtrl=new CButton;(CButton*)pWndCtrl)-Create(_T(Check Box),WS_VISIBLE|BS_CHECKBOX,CRect(280,40,400,70),this,5);break;case 5:/创建单选钮pWndCtrl=new CButton;(CButton*)pWndCtrl)-Create(_T(Radio Box),WS_VISIBLE|BS_RADIOBUTTON,CRect(280,40,400,70),this,6);break;case 6:/创建组合框pWndCtrl=new CComboBox;(CComboBox*)pWndCtrl)-Create(WS_VISIBLE|CBS_DROPDOWN,CRect(280,40,400,100),this,7);break;,36,case 7:/创建列表框pWndCtrl=new CListBox;(CListBox*)pWndCtrl)-Create(WS_VISIBLE|WS_BORDER,CRect(280,40,400,100),this,8);break;case 8:/创建组合框pWndCtrl=new CScrollBar;(CScrollBar*)pWndCtrl)-Create(WS_VISIBLE|SBS_VERT,CRect(350,40,380,100),this,9);break;default:pWndCtrl=new CStatic;(CStatic*)pWndCtrl)-Create(_T(No any Control!),WS_VISIBLE,CRect(280,40,400,70),this,1);break;(5)用类向导为“应用”按钮添加BN_CLICKED消息处理函数,加入代码:if(pWndCtrl!=NULL)delete pWndCtrl;pWndCtrl=NULL;UpdateData();pWndCtrl=new CStatic;(CStatic*)pWndCtrl)-Create(_T(Static Text:n+m_strCtrlName+n),WS_VISIBLE,CRect(280,50,400,100),this,10);,37,(6)为程序添加“测试控件动态创建控件(ID_TEST_COMBO)”菜单项,为菜单加入命令响应函数,以此来显示对话框:CCombDlg dlg;dlg.DoModal();(7)编译,查改错之后运行程序。课外练习:编写一个包含如下图所示的两种对话框的SDI应用程序,对话框由专门菜单命令启动。,38,四、通用对话框,通用对话框(Common Dialog)是一种Windows系统所定义的对话框,它不需要用户复杂编程,即可方便地在程序中调用中。MFC提供VC+编程环境的通用对话框如下所示。,39,通用对话框的使用方法:(1)声明一个通用对话框类的对象,如CColorDialog dlg;(2)修改相应数据成员,或调用函数设置属性值,定制Dlg;(3)调用DoModal()函数打开对话框模板;(4)调用成员函数获取需要的控件数据。应用实例:调用颜色对话框获取色彩值,然后以该色彩填充视图背景。实现:(1)编制一SDI程序,添加一“查看填充视图区”的菜单项,调用颜色对话框获取色彩;CColorDialog dlg;if(dlg.DoModal()=IDOK)m_Color=dlg.GetColor();Invalidate();(2)在OnDraw()函数中填充视图背景色:CClientDC dc(this);CRect rect;GetClientRect(rect);dc.FillSolidRect(,

    注意事项

    本文(对话框和标准控件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开