第5章对话框及常用控件课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第5章对话框及常用控件课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对话框 常用 控件 课件
- 资源描述:
-
1、 对话框是应用程序中最重要的界面元素之一,是与用户交互的重要手段。它是一个特殊的窗口,其特殊是因为对话框中往往有多个控件(控件是用于和用户交互控件是用于和用户交互的基本单元的基本单元。控件常用于对话框中,另外它还可由其它的父窗口所拥有以完成其它的任务。),如文本框、编辑框、列表框、滚动条等。用户通过与对话框中各控件的交互,起到输入/输出数据或完成其它任务的目的。第五章第五章 对话框及常用控件对话框及常用控件从MFC编程编程的角度角度看,一个对话框对话框(Dialog Box)由两部分组成由两部分组成:1.对话框对话框(资源)(资源)模板模板 对话框(资源)模板用于指定对话框的控件及其分布,Wi
2、ndows根据对话框模板来创建并显示对话框。2.对话框类对话框类 对话框类用来实现对话框的功能,由于对话框行使的功能各不相同,因此需要从CDialog类派生一个新类,以完成特定的功能。相应地,对话框的设计包括对话框模板的设计和对话框类的设计两个主要方面。与 对 话 框 有 关 的 消 息 主 要 包 括WM_INITDIALOG消息和控件通知消息。在对话框创建时将发出WM_INITDIALOG消息(初始化对话框消息),该消息的消息处理函数是OnInitDialog。OnInitDialog函数的主要用函数的主要用途是初始化对话框。途是初始化对话框。对话框的控件对话框的控件会向对话框发送控件通知
3、消息会向对话框发送控件通知消息。CObject CCmdTarget CWnd CDialog CCommonDialog(通用对话框)CColorDialog(颜色对话框)CFileDialog(文件对话框)CFindReplaceDialog(查找替换对话框)CPageSetupDialog(页面设置对话框)CFontDialog(字体对话框)CPrintDialog(打印对话框)MFC的的部分对话框类继承关系如下:部分对话框类继承关系如下:MFC的CDialog类封装了用于对话框显示、关闭等常用操作的许多成员函数。5.1.1模式对话框和无模式对话框模式对话框和无模式对话框1.模式对话框模
4、式对话框 模式对话框模式对话框(Modal Dialog Box)是指是指当对话框出现时,它的父窗口将暂时失效,只当对话框出现时,它的父窗口将暂时失效,只有处理完对话框所要求的动作后,才会把控制有处理完对话框所要求的动作后,才会把控制权交回给父窗口权交回给父窗口。5.1 对话框的使用对话框的使用模式对话框一般创建过程:Step 1:用CDialog:CDialog构造器创建模式对话框;Step 2:用CDialog:DoModal函数显示对话框();Step 3:用CDialog:EndDialog函数终止对话框。CDialog:CDialog构造函数:格 式:C D i a l o g(U
5、I N T n I D T e m p l a t e,C W n d*pParentWnd=NULL);功能:构造一个基于资源的模式对话框。参数:nIDTemplate-对话框模板资源ID号;pParentWnd-指向父窗口的指针,若为NULL,则对话框窗口为应用程序主窗口。CDialog:DoModal函数:格式:virtual int DoModal();功能:激活并显示模式对话框,操作完成后返回对话框结果。返回:返回一个int值(IDOK或IDCANCEL),若创建失败,则返回0。CDialog:EndDialog函数:格式:void EndDialog(int nResult);功能
6、:退出模式对话框。参数:nResult-为DoModal函数的返回值。2.无模式对话框无模式对话框/共存式对话框共存式对话框无模式对话框无模式对话框(Modaless Dialog Box)又称共存式对话框,它不不会令父窗口失效,因此无模式对话框出现时,使用者可以继续执行会令父窗口失效,因此无模式对话框出现时,使用者可以继续执行父窗口的工作。父窗口的工作。无模式对话框一般创建过程:Step 1:用CDialog:Create函数创建无模式对话框();Step 2:用CWnd:ShowWindow函数显示对话框();Step 3:用CWnd:DestroyWindow函数终止对话框。注:由于函数
7、CDialog:OnOK()和CDialog:OnCancel()调用EndDialog(),所以需要重载CDialog:OnOK()和CDialog:OnCancel();若按下Cancel按钮时,结束对话框,则在CDialog:OnCancel()中调用DestroyWindow()。CDialog:Create函数:格 式:B O O L C r e a t e(U I N T n I D T e m p l a t e,C W n d*pParentWnd=NULL);功能:创建一个无模式对话框。返回:若创建成功则返回非0。参数:nIDTemplate-对话框模板资源ID号;pPare
8、ntWnd-指向父窗口的指针,若为NULL,则对话框窗口为应用程序主窗口。CWnd:ShowWindow函数:格式:BOOL ShowWindow(int nCmdShow);功能:显示窗口。返回:若窗口原可见,则返回非0;若窗口原隐藏,则返回0。参数:nCmdShow-规定如何显示CWnd窗口,常用取值有:SW_HIDE:隐藏窗口 SW_SHOWMINIMIZED:最小化窗口 SW_RESTORE:激活并显示窗口;若已最小化或最大化,则恢复 其原大小和位置 SW_SHOW:激活窗口并以其当前大小和位置显示窗口 SW_SHOWMAXIMIZED:最大化窗口 。CWnd:DestroyWindo
9、w函数:格式:virtual BOOL DestroyWindow();功能:删除与CWnd对象连接的窗口。返回:若删除成功,则返回非0值。CDialog:OnOK函数:格式:virtual void OnOK();功能:当单击模式无模式对话框中Ok按钮(ID号为IDOK的按钮)时调用该函数。可重载该函数以实现特定的Ok按钮动作。CDialog:OnCancel函数:格式:virtual void OnCancel();功能:当单击模式无模式对话框中Cancel按钮(ID号为IDCANCEL的按钮)时调用该函数。可重载该函数以实现特定的Cancel按钮动作。5.1.2使用对话框编辑器使用对话框
10、编辑器操作方法:Insert-Resource-Dialog-New。1.打开对话框编辑器。打开对话框编辑器。2.控件工具栏中各控件含义。控件工具栏中各控件含义。3.控件布局工具栏。控件布局工具栏。5.1.3对话框的编程对话框的编程程序例程序例:用MFC AppWizard创建一SDI程序,程序运行后单击OUSE弹出一模式对话框。(见操作演示)主要步骤:Step1:用MFC AppWizard创建一SDI程序(设工程名为CH51A);Step2:Insert-Resource-Dialog-New添加对话框资源;Step3:View-ClassWizard为对话框派生一个类CMyDlg;此步操
11、作完成时要生成一对文件:MYDLG.H 和MYDLG.CPP。Step4:View-ClassWizard选择视图类CXXXView,添加OnLButtonDown处理函数;Step5:在OnLButtonDown函数中添加以下代码:void CXXXView:OnLButtonDown(UINT nFlags,CPoint point)/TODO:Add your message handler code here and/or call defaultCMyDlg dlg;/生成并构造一个对话框对象dlg.DoModal();/显示对话框CView:OnLButtonDown(nFlags
12、,point);Step6:在CXXXView.CPP文件开始的#include后添加以下代码:#include MyDlg.h程序例程序例:为模式对话框增加一个命令按钮,单击该按钮弹出一消息框。按钮控件的常用消息有两个:按钮控件的常用消息有两个:、BN_CLICKED(单击按钮消息)当用户单击按钮时,由按钮控件发送给对话框。当用户单击按钮时,由按钮控件发送给对话框。、BN_DOUBLECLICKED(双击按钮消息)当用户双击按钮时,由按钮控件发送给对话框。当用户双击按钮时,由按钮控件发送给对话框。程序例:程序例:用MFC AppWizard创建一SDI程序,程序运行后单击OUSE弹出一无模式
13、对话框。(见操作演示)主要步骤:Step1:用MFC AppWizard创建一SDI程序(设工程名为CH51B);Step2:Insert-Resource-Dialog-New添加对话框资源;Step3:View-ClassWizard为对话框派生一个类CMyDlg;此 步 操 作 完 成 时 要 生 成 一 对 文 件:M Y D L G.H 和MYDLG.CPP。Step4:View-ClassWizard选择视图类CH51BView,添加OnLButtonDown处理函数;Step5:在OnLButtonDown函数中添加以下代码:void CCH51BView:OnLButtonDo
14、wn(UINT nFlags,CPoint point)/TODO:Add your message handler code here and/or call defaultCMyDlg*pDlg=new CMyDlg;pDlg-Create(IDD_DIALOG1,this);pDlg-ShowWindow(SW_SHOW);CView:OnLButtonDown(nFlags,point);Step6:在CH51BView.CPP文件开始的#include后添加以下代码:#include MyDlg.h 从上面两种不同对话框的例子可以看出:模式对话框在显示时,未关闭窗口前其它窗口是不能成
15、为活动窗口的;无模式对话框在显示时,未关闭窗口前其它窗口则是可以成为活动窗口的。控件(Control)是能够完成输入是能够完成输入/输出等特定功能的输出等特定功能的一种特殊窗口一种特殊窗口。系统定义的标准控件所对应的类一般是由CWnd派生的。5.2.1在对话框中创建和使用控件在对话框中创建和使用控件 控件的创建方式有两种:1、在对话框模板中用编辑器指定控件即将控件的父窗口指定为对话框。2、把控件看作任一窗口的子窗口,通过调用Create()函数来创建5.2 控件的创建和使用控件的创建和使用程序例:程序例:在本例中,可学到三种改变按钮控件标题的方法:法法1:通过ClassWizard 增加资源I
16、DD_DIALOG1的CButton类对象 CButton m_MyBtn;在OnInitDialog()中添加:m_MyBtn.SetWindowText(“欢迎欢迎”);/将按钮控件标题设为 /“欢迎”CWnd:SetWindowText函数:格式:void SetWindowText(LPCTSTR lpszString);功能:设置窗口或控件的标题。参数:lpszString-指向用作新标题或控件文本的CString对象或字符串。法法2:通过CWnd:GetDlgItem获取按钮控件对象指针实现 设新增按钮控件的ID号为IDC_BUT T O N 1,则与m_MyBtn.SetWind
17、owText(“欢迎欢迎”);等价的代码如下:GetDlgItem(IDC_BUTTON1)-SetWindowText(“欢欢迎迎”);CWnd:GetDlgItem函数:格式:CWnd*GetDlgItem(int nID);功能:获取指定控件或子窗口的指针。参数:nID-控件或子窗口的ID标识符。法法3:在对话框模板对话框模板中,通过设定控件属性对话框实现 5.2.2控件的数据交换和数据验证控件的数据交换和数据验证DDV/DDX 技术技术DDX(dialog data exchange)DDV(dialog data validation)UpdateData()函数实现控件的控制程序例
18、(P200)UpdateData();M_mybtn.SetWindowText(m_strEdit)5.2.3 控件的通用属性控件的通用属性控件的属性对话框的修改5.2.4 控件的消息控件的消息在控件的使用和编程过程中,用户可以向控件发送消息来完成特定的任务,或者是根据控件产生的消息来执行所需要的程序代码。当控件的状态发生改变时,控件会向其父窗口发送消息,该消息称当控件的状态发生改变时,控件会向其父窗口发送消息,该消息称为为通知消息。每个消息均由一个MSG结构来记录。对一般控件一般控件,通知消息通常是WM_COMMAND。MSG结构中记录的该消息的几个常用参数说明如下:HIWORD(wPar
19、am)-控件ID标识符LOWORD(wParam)-控件的具体消息代码(如命令按钮有BN_CLICKED和BN_DOUBLECLICKED两个)lParam-控件的句柄5.2.5 如何在程序中加载其它的应用程序如何在程序中加载其它的应用程序?有时,需要在一个应用程序中加载另一个应用程序。在VC中,有三个API函数WinExec()、ShellExecute()、CreateProcess()可以实现这种应用目的。WinExec最简单,原型如下:WinExec(LPCSTR lpCmdLine,/程序文件的路径 UINT FuCmdShow/窗口显示方式 );如,加载C盘windows文件夹下的
20、notepad.exe记事本程序,代码如下:WinExec(c:windowsnotepad.exe,SW_SHOWMAXIMIZED);运行EMAIL或网址 在某消息映射中添加实现EMAIL运行char szMailAddress80;strcpy(szMailAddress,mailto:);ShellExecute(NULL,open,szMailAddress,NULL,NULL,SW_SHOWNORMAL);在某消息映射中添加实现网址启动char szMailAddress80;strcpy(szMailAddress,http:/);ShellExecute(NULL,open,s
21、zMailAddress,NULL,NULL,SW_SHOWNORMAL);可将控件分为三类:1、一般控件一般控件/标准控件标准控件控件名称 MFC类静态控件 CStatic()按钮控件 CButton()(包括:命令按钮命令按钮、单选钮单选钮、复选框复选框)编辑控件 CEdit()列表框 CListBox()组合框 CComboBox()滚动条 CScrollBar()5.3 Window常用控件常用控件 2、新增的公共控件新增的公共控件Windows支持18种新的公共控件,VC的MFC类库提供相应的类以方便程序员编程。控件名称 MFC类 动画控件 CAnimateCtrl扩展组合框控件 C
22、ComboBoxEx (比一般的组合框控件多一项功能:支持图象列表)日期时间控件 CDateTimeCtrl标题控件 CHeaderCtrl热键控件 CHotKeyCtrl(它是一个窗口,用于显示用户输入的热键,如Ctrl+Shift+F8。使用热键可迅速地完成指定的操作。它常用于对话框中。)图象列表 CImageListIP地址控件 CIPAddressCtrl列表控件 CListCtrl月历控件 CMonthCalCtrl进展条控件 CProgressCtrl丰富编辑控件 CRichEditCtrl(是一个窗口,用户可以在其中输入和编辑文字,同时允许用户在编辑时使用丰富的格式特性,就像Wo
23、rd中使用脚注Footnote等一样。它既支持文字和图形格式,也可包括嵌入的OLE对象。)滑动条控件 CSliderCtrl()旋转按钮控件 CSpinButtonCtrl()状态栏控件 CStatusBarCtrl标签控件 CTabCtrl工具栏控件 CToolBarCtrl工具栏提示控件 CToolTipCtrl树形控件 CTreeCtrl 3、ActiveX控件控件ActiveX(Active the Internet:激活Internet)控件控件:是MS提出的一组使用COM(Component Object Model:组件对象模型)使得软件组件在网络环境中进行交互的技术集。另外,我
24、们还可编写代码定制自己的控件(Custom Control)。5.3.1静态控件和按钮静态控件和按钮 1、静态控件静态控件静态控件的功能比较简单,可作为显示字符串、图标、位显示字符串、图标、位图图用。静态控件一般不接收用户输入,也不能被选择。在对话框的资源编辑器的控件工具栏中,属于静态控件的有:静态文本静态文本(Static Text)、成组框(Group Box)、静态图片(Picture)。成组框成组框(Group Box):是一个矩形框,其中有一组控件(如单选钮或复选框)。它可用于把具有公共用途的控件组织在一起。成组框不能被选中,应用程序也不能向它发送消息。静态图片静态图片(Pictur
25、e)可将应用程序资源中的位图、图标等显示在该控件中。2、按钮、按钮事实上,Wndows可为我们提供4种按钮种按钮:命令按钮/按键按钮(Button)、单选钮(Radio Button)、复选框(Check Box)、自画按钮四种。MFC提供类CButton来实现按钮控件的功能。从对话框模板创建,只需向对话框类加入CButton类型的成员变量即可。(1)命令按钮命令按钮/按键按钮(Button)几乎所有的对话框都使用命令按钮,应用程序通常使用命令按钮启动某一操作。(2)单选钮单选钮(Radio Button)应用程序通常在成组框中使用单选按钮,用户可以在一组相关但又对立的选项中进行选择,在同一时
展开阅读全文