对话框和常用控件剖析_第1页
对话框和常用控件剖析_第2页
对话框和常用控件剖析_第3页
对话框和常用控件剖析_第4页
对话框和常用控件剖析_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、4对话框和常用控件,4.1对话框的使用4.2创建和使用控件的方法4.3常用控件4.4通用对话框和消息对话框,4.1对话框的使用,4.1.1模式和非模式对话框意味着当对话框弹出时,用户必须在对话框中进行相应的操作,对话框所在的应用程序在退出对话框之前不能继续执行。无模式对话框是指当对话框弹出时,它仍然留在屏幕上,并且可以在对话框所在的应用程序中继续执行其他操作;当需要使用对话框时,单击对话框所在的区域将其激活。有不同的方法来创建和退出对话框窗口。创建:时,系统自动为模式对话框分配内存空间,当对话框退出时,对话框对象自动删除。非模态对话框要求程序员指定内存,并且对话框对象需要在退出时被删除。退出时

2、,两个对话框使用的终止功能不同。模态对话框通过调用CDialog: EndDialog来终止,非模态对话框通过调用CWnd:DestroyWindow来终止。函数CDiaolog:OnOK和CDiaolog:OnCancel调用EndDialog,因此非模态对话框必须用DestroyWindow重载OnOK和OnCancel。需要正确删除表示对话框的对象。对于模式对话框,可以在创建函数返回后删除对象。无模式对话框不同步,并在创建函数调用后立即返回,因此不知道什么时候删除对象,但可以通过重载CWnd:PostNcDestroy函数来清除它。4.1使用对话框,4.1.2使用对话框编辑器打开对话框编

3、辑器,将项目工作区窗口切换到资源视图页面,并双击对话框目录中的任何对话框标识。或者,选择“插入”“资源”菜单命令(或按快捷键),选择“对话框”项目,然后单击“新建”。4.1对话框的使用、添加和编辑对话框中的控件(1)添加控件的方法在对话框中添加控件有几种方法:在控件工具栏中单击一个控件,鼠标箭头在对话框中变成“十字”形;在对话框的指定位置单击鼠标左键,然后拖动选择框来更改控件的大小和位置。单击控件工具栏中的控件,鼠标箭头对话框变成十字形状;在指定位置单击鼠标左键,将鼠标拖动到满意的位置,然后松开鼠标按钮。用鼠标左键单击控件工具栏中的控件,并按住鼠标键;在将鼠标移动到对话框的指定位置的过程中,您

4、会看到一个带有控件标记的虚线框;松开鼠标按钮。4.1对话框的使用,(2)单个控件的选择鼠标选择确保选择按钮()被选中。将鼠标指针移动到指定的控件,然后单击鼠标左键。选择助记符,右键单击相应的控件。选择“属性”菜单项。对话框中的“标题”框用于输入控件的标题。在标题中的字母前键入“/afx _ msg”。(2)添加消息映射宏:BEGIN_MESSAGE_MAP(CMyDlg,CDiLog)/消息映射start/afx _ msg _ MAP(CMYDLG)on _ bn _ clicked(IDC _ button 1,on button 1)/afx _ msg _ mapend _ MEssa

5、ge _ MAP()/消息映射end指示消息及其处理功能之间的关系。点击按钮控制按钮1,系统将自动调用按钮1功能。(3)在MyDlg.cpp文件中编写一个空的消息处理函数模板,以便用户可以填写具体的代码,例如下面的框架:void c mydlg :3360 on button 1()/todo :在此添加您的控件通知处理程序代码,4.1使用对话框,使用程序中的对话框(1)使用项目工作区中的ClassView选项卡项打开Ex _ SDIHello.cpp源文件;(2)在Ex _ SDIHello.cpp源文件前面添加一个包含类CMyDlg的头文件:# includeDLG . h(3)返回TRU

6、E在初始化函数体中,在语句前添加以下代码:dlg。doMoDEL();多模态是模式对话框中最常用的功能,它负责对话框的显示和终止。(4)编译并运行。在程序开始时,出现由用户设计的对话框。点击按钮1将弹出“欢迎来到对话框的设计!”消息对话框。创建控件有两种方法:一种是使用编辑器在对话框模板中指定控件,即指定控件的父窗口为对话框,这有明显的优势,因为当应用程序启动对话框时,窗口系统会为对话框创建一个控件;当对话框消失时,控件被清除。另一种方法是将控件视为任何窗口的子窗口,并通过调用相应的创建函数来创建它。示例ex _ sdihello基于上面的示例ex _ sdihello以子窗口的形式创建一个控

7、件。(1)打开CMyDlg的头文件MyDlg.h,并添加一个按钮类CButton指针变量:class CMyDlg 3360 publicdialog/constructionpublic : CMyDlg(cwnd * PP apprent=null);/标准构造函数按钮* m _ btnWnd,4.2如何创建和使用控件,(2)按Ctrl+W打开对话框,切换到消息映射页面,在对象标识列表中选择“CMyDlg”项,在消息列表中找到WM _ INITDIALOG消息,双击鼠标左键,然后单击编辑代码按钮。添加以下代码:bool cmydlg : init dialog()CDI alog :336

8、0 init dialog();/TODO:在此处添加额外的初始化m_btnWnd=新按钮();/构造按钮控件m_btnWnd -Create(您好,ws _ child | ws _ visible | bs _ button,折痕(20,20,120,60),此,201);/创建CFont * font=this-GetFont();/获取对话框的字体m_btnWnd-SetFont(字体);/设置控制字体返回真;/除非将焦点设置为控件,否则返回true/exception : ocx属性页应返回false create用于创建按钮控件。第一个参数指定按钮的标题。第二个参数指定控件的样式,

9、第三个参数指定其在父窗口中的位置和大小,第四个参数指定父窗口的指针,最后一个参数指定控件的标识值。(3)编译和运行,(4.2)创建和使用控件的方法,(4.2.2)控件的数据交换和数据验证。例如,如果您为CMyDlg类的IDC_BUTTON1添加并使用其成员变量m_MyBtn,相应的过程如下:(1)启动MFC类向导并切换到成员变量页面,如图所示。(2)选择CMyDlg作为类名,然后在控制标识列表中选择要关联的控制标识号IDC_BUTTON1,双击鼠标左键或点击添加变量按钮,如图所示。ClassWziard的“成员变量”页面,“添加成员变量”对话框,4.2如何创建和使用控件,(3)在“成员变量名称

10、”框中填写与控件关联的成员变量m_MyBtn,单击“确定”,刚刚添加的内容将出现在“控件标识”列表中。应该注意的是,在DDV/DDX技术中,允许为同一个控件关联多个数据成员变量,但是必须确保这些变量名彼此不同,并且这些变量不能有相同类型的多个变量。如果添加的成员变量是数字类型,用户需要在MFC类向导对话框的成员变量页面底部输入变量的范围,这是控件的数据验证设置。(4)单击确定,发现类向导已经进行了以下三项修改。在MyDlg.h文件中,添加与控件关联的成员变量的声明,代码如下:/dialog data/afx _ data(cmydlg)enu midd=IDD _ dialog 1;CButt

11、onm _ MyBtnCStringm _ strEdit/AFX_DATA,4.2控件的创建和使用方法,在MyDlg.cpp文件中的CMyDlg构造函数的实现代码中,添加数据成员变量的初始代码:CMYDLG :3360 CMYDLG(cwnd * PP apprent/*=null */): cdailog(CMYDLG 33603360 IDD,PP apprent)/AFX _ DATA _ INIT(CMYDLG)m _ stress=_ t/AFX _ DATA _ INIT添加DDX无效cmydlg :3360 odataexchange(CDATA exchange * PdX)

12、cdialog :3360 odataexchange(PdX);/调用此函数作为DDX/afx _ data _ map(cmydlg)ddx _ control(pdx,IDC _ button1,m _ mybtn)的开始;DDX _文本(pDX,IDC_EDIT1,m _ Stredit);DDV_MaxChars(pDX,m_strEdit,20);/AFX_DATA_MAP,4.2创建和使用控件的方法,(5)为控件定义关联的数据成员变量后,可以使用CWnd:UpdateData函数来控制控件,包括控件相关数据的输入和读取。运行程序,在编辑框中输入“你好”后,点击按钮1,按钮的名称将

13、成为编辑框控件中的内容“你好”,如图所示。使用控件的数据成员变量、4.2创建和使用控件的方法、4.2.3控件的常规属性、按钮控件的属性对话框、4.2创建和使用控件的方法以及4.2.4控件的消息。在编程和使用过程中,您可以向控件发送消息以完成特定任务,或者根据控件生成的消息执行您自己的代码。应用程序创建通用控件或公共控件后,当控件的状态发生变化时,控件会向其父窗口发送一条消息,这称为“通知消息”。对于每条消息,系统将使用MSG结构记录它,该结构具有以下结构:typedef结构标记MSG/msghwndhwnd;/收到窗口句柄UINT消息;/消息WPARAM wParam/报文的附加信息,其含义取

14、决于报文LPARAM lParam/报文的附加信息,其含义取决于报文的DWORD时间;/发送消息的时间点pt;/消息传输时光标的屏幕坐标MSG对于一般控件,通知消息通常是WM_COMMAND消息,其中wParam参数的低位字包含控件标识符,wParam参数的高位字是通知代码,lParam参数是指向控件的句柄。对于公共控件,通知消息通常是WM_NOTIFY消息,wParam参数是发送通知消息的控件的标识符,lParam参数是指向NMHDR结构的指针。对于某些控件的通知消息,lParam参数指向一个更大的结构,该结构中的第一个成员也必须有一个NMHDR结构。您可以使用类向导来映射控件的WM_COM

15、MAND或WM_NOTIFY消息。虽然控件的通知消息各不相同,但是以下通知消息对所有窗口控件都是通用的:单击控件中的鼠标左键双击控件中的鼠标左键单击控件中的鼠标左键双击控件中的鼠标右键返回当控件具有输入焦点时按回车键cus控件获得输入焦点控件失去输入焦点控件没有足够的内存供控件完成操作。4.3根据控件的特点和功能,常用控件一般可分为三类:窗口公共控件、ActiveX控件和MFC添加的一些新控件。4.3公共控件,4.3.1静态控件和按钮静态控件静态控件用于显示字符串、框、矩形、图标、位图或增强元文件。它可以用作标签、盒子或分隔其他控件。静态控件通常不接收用户输入,也不生成通知消息。在对话框编辑器的控件工具栏中,有三个静态控件:静态文本()、分组框()和静态图片()。静态图片控件的常规和样式属性对话框,4.3常用控件,按钮(1)按钮按钮通常可以产生动作并立即执行命令,这通常称为命令按钮。两种样式:标准按钮和默认按钮。在外观上,默认按钮是在标准按钮周围添加黑色边框。此黑色边框表示按钮已接收到键盘的输入焦点,并且只能通过按回车键来按下按钮。具体设置方法是在按钮属性对话框的样式页面中选择“默认按钮”项。(2)单选按钮在文本前面有一个圆圈,选中时用黑点标记,可分为两种类型:通用和自动。在自动类型中,如果选择了同一组按钮中的一个单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论