ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:37.71KB ,
资源ID:19522039      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19522039.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++MFC控件使用详解Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++MFC控件使用详解Word格式.docx

1、在对话框中添加一个控件的方法有下列几种:在控件工具栏中单击某控件,鼠标箭头在对话框内变成 十”字形状;在对话框指定 位置单击鼠标左键,再拖动选择框可改变控件的大小和位置。在控件工具栏中单击某控件,鼠标箭头对话框内变成 十”字形状;在指定位置处单 击鼠标左键不放,拖动鼠标至满意位置,释放鼠标键。用鼠标左键点中控件工具栏中的某控件,并按住鼠标键不放;在移动鼠标到对话 框的指定位置的过程中,会看到一个虚线框,下面带有该控件的标记;释放鼠标键。(2)单个控件的选取鼠标选取保证选择按钮()是被选中的,移动鼠标指针至指定的控件上,单击鼠标左键。助记符选取在相应的控件上右击。选择 “Properties菜单

2、项,对话框中的“ Caption匡是用来输入控 件的标题,在标题中的某个字母之前键入 “ &符号,则该字母就是此控件的助记符。Tab键选取利用Tab键,可在对话框内的控件中进行选择。每按一次 Tab键依次选取对话框中的下一个控件,若按住Shift键,再单击Tab键则选取上一个控件。(3)多个控件的选取在对话框内按住鼠标左键不放,拖出一个大的虚框,释放鼠标,则被该虚框所包围的 控件都将被选取。先按住Shift键不放,用鼠标选取控件,直到所需要的多个控件选取之后再释放 Shift键。若在选取时,对已选取的控件再选取一下,则该控件取消选取。一旦单个控件被选取后,其四周由选择框包围着,选择框上还有几个

3、 (通常是八个)蓝色实心小方块,拖动它可改变控件的大小,如图。多个控件被选取后,其中只有一个控件的选择框有几个蓝色实心小方块,这个控件称为主要控件,而其他控件的选择框的小方块是空心的。如图。(4)控件的移动、删除和复制当单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的选择框可移动控件。若在鼠标拖动过程中还按住 Ctrl键则复制控件。若按Del键可将选取的控件删除。(5)设定控件的Tab键次序一是改变用Tab键选择控件的次序,二是当两个或两个以上的控件构成一组时,需要 它们的Tab键次序连续。对话框内控件的Tab键次序设定步骤如下:首先,选择“Layout ”“Tab Orde命令,或按C

4、trl+D,此时每个控件的左上方都有 一个数字,表明了当前Tab键次序,如图。其次,按新的次序依次用鼠标单击各个控件,新的 Tab键即可生成。最后,单击对话框或按Enter键结束Tab Order方式。对话框内的控件的布局大多布置控件的命令使用前,需要选取多个控件,且 主要控件”起到了关键作用。多个控件的布置过程中,常需要重新设置 主要控件”。设置的方法是按住Ctrl或Shift键, 用鼠标单击所要指定的控件。系统提供了网格、标尺等辅助工具。在图 5.5的控件布局工具栏的最后两个按钮分别用来网格和标尺的切换。一旦网格显示,添加或移动控件时都将自动定位在网格线上。“Layou菜单下的“Guide

5、 Setting命令提供了设置网格单元大小的功能,如图。测试对话框5.1.3对话框的编程添加对话框资源选择“Insert ”“Resource”!命令(或按Ctrl+R),若单击Dialog项左边的“ + 号,将展 开对话框资源的不同类型选项,如图。改变对话框的属性在对话框模板的非控件的区域内左击,用下列方式之一打开属性对话框:选择“View菜单 “Propertie命令或按Alt+Enter健。用鼠标右击对话框模板,选取 Properties命令。如图,General是对话框属性的默认显示页面, 其中列有对话框的标识符名称框、 标题框等,具体说明如表。向对话框内添加控件添加一个类:注意:以字

6、母c开头在对话框模板的非控件的区域内双击,如图的对话框。单击0K,弹出如图的对话框。可以为对话框资源定义一个新类名 C123。消息映射首先添加按钮”单击OK按钮,出现“MFC ClassWizarc对话框,如图。选定IDC_BUTTON1的BN_CLICKED,双击左键或单击Add Function按钮,如图。对话框中,可以为添加的成员函数名重新定义,单击 OK。选定成员函数 On Butt on1项,双击左键或单击Edit Code按钮,在此成员函数添加代码。不同资源对象(控件、菜单命令等)的消息是不相同的。例如,按钮控件 IDC_BUTTON1 的消息有两个:BN_CLICKED 禾口 B

7、N_DOUBLECLICKED,分别表示当 用户单击或双击该按钮时产生的消息。一般不需要对图5.10对话框中的0K(确定)与Cancel(取消)按钮进行消息映射,因 为系统已自动设置了这两个按钮的动作,当用户单击这两个按钮都将自动关闭对话框。程序在三处添加新用户代码(1)在头文件(MyDIg.h文件)中声明消息处理函数 OnButton1:protected:AFX_MSG(CMyDlg)afx_msg void On Butt on 1();/AFX_MSG在MyDlg.cpp源文件开头部分的消息映射入口,添加消息映射宏:BEGIN_MESSAGE_MAP(CMyDlg, CDialog)

8、/ 消息映射开始AFX_MSG_MAP(CMyDlg)ON_BN_CLICKED(IDC_BUTTON1, On Butt on1)/AFX_MSG_MAPEND_MESSAGE_MAP() / 消息映射结束表明消息及其处理函数之间的联系。 单击按钮控件IDC_BUTTON1时,系统将自动调 用 On Butt on1 函数。在MyDlg.cpp文件中写入一个空的消息处理函数的模板,以便用户填入具体代码,如下面的框架:void CMyDlg:O nButto n1()/ TODO: Add your con trol no tificati on han dler code here在程序中使

9、用对话框(1)利用项目工作区的ClassView标签项,将Ex_SDIHello.cpp源文件打开;(2)在Ex_SDIHello.cpp源文件的前面加上包含类 CMyDlg的头文件:#i nclude MyDlg.h(3)在InitInstanee函数体中的“return TRUE语句之前添加下列代码:CMyDlg dlg;dlg.DoModal();DoModal是模式对话框最常用的函数,它负责对话框的显示和终止。(4)编译并运行。在程序的一开始就出现用户自己设计的对话框,单击 Butt on1按钮将弹出 欢迎进入对话框的设计! ”的消息对话框来。5.2.1控件的创建方法控件的创建方式有以

10、下两种: 一种是在对话框模板中用编辑器指定控件,也就是说,将控件的父窗口指定为对话框,这样做的好处是明显的,因为当应用程序启动该对话框时, Windows系统就会为对话框创建控件;而当对话框消失时,控件也随之清除。 另一种方式是将控件看作是任一窗口的子窗口,并通过调用相应的 Create函数来 创建。例Ex_SDIHello在上例Ex_SDIHello的基础上用子窗口方式创建控件。(1)打开CMyDlg的头文件MyDIg.h,添加一个按钮类CButton指针变量:class CMyDlg : public CDialog/ Con structi onpublic:CMyDlg(CWnd* p

11、Pare nt = NULL); / sta ndard con structorCButton *m_bt nWnd;(2)按Ctrl+W快捷键打开对话框,切换到 Message Maps页面,在Object IDs列表中选 定“CMyDlg项,并在Message列表中找到 WMNITDIALOG 消息,双击鼠标左键,然后单击Edit Code按钮,添加下列代码:BOOL CMyDIg: On I ni tDialog() CDialog:O nln itDialog(); Add extra in itializatio n herem_btnWnd = new CButton(); /

12、构造按钮控件m_bt nWnd -Create(你好, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(20, 20, 120, 60), this, 201); / 创建CFont *font = this-GetFont(); / 获取对话框的字体m_btnWnd-SetFont(font); / 设置控件字体retur n TRUE; / return TRUE uni ess you set the focus to a con trol/ EXCEPTION: OCX Property Pages should return FALSECre

13、ate用来创建一个按钮控件,第一个参数指定按钮的标题,第二个参数指定控件的 风格,第三个参数指定它在父窗口中的位置和大小,第四个参数指定父窗口指针,最后 一个参数是指定该控件的标识值。(3)编译并运行,结论:采用第一种办法5.2.2控件的数据交换和数据校验 ddx交换,ddv校验例如,为CMyDlg类的按钮控件IDC_BUTTON1添加并使用其成员变量 m_MyBtn,则其相应的过程如下:(1)启动 MFC ClassWizard,切换到 Member Variables页面,如图。选定Class name为CMyDlg,然后在Control IDs列表中,选定所要关联的控件ID 号IDC_B

14、UTTON1,双击鼠标左键或单击Add Variable按钮,如图。(3)在Member variable name框中填好与控件相关联的成员变量 m_MyBtn,单击0K,在Control IDs列表中出现刚才添加的内容。需要说明的是,DDV/DDX技术中,允许为同一个控件关联多个数据成员变量,但必须保证这些变 量名是互不相同的(control (控件类),value (具体数据)且这些变量在同一个类型不 能有多个变量。如果添加的成员变量是一个数值类型,则在 MFC ClassWizard对话框的 MemberVariables页面下方还要求用户输入变量的范围,这就是控件的数据校验设置。同样

15、方法为edit添加m_stredit单击OK,发现ClassWizard作了以下三方面的修改。1在MyDlg.h文件中,添加与控件关联的成员变量的声明,代码如下:/ Dialog DataAFX_DATA(CMyDlg)enum IDD = IDD_DIALOG1 ;CButt on m_MyBt n;CStri ng m_strEdit;AFX_DATA2在MyDlg.cpp文件中的CMyDlg构造函数实现代码处,添加数据成员变量的初始 代码:CMyDlg:CMyDlg(CWnd* pPare nt /*二NULL*/)CDialog(CMyDlg:IDD, pPare nt) AFX_DA

16、TA_INIT(CMyDlg)m_strEdit = _T();/AFX_DATA_INIT3在MyDIg.cpp文件中的DoDataExchange函数体内,添加控件的 DDX/DDV 代码。 void CMyDlg:DoDataExcha nge(CDataExcha nge* pDX)DoDataExchange(pDX); / 调用此函数作为 DDX 的开始AFX_DATA_MAP(CMyDlg)DDX_C on trol(pDX, IDC_BUTTON1, m_MyBt n);DDX_Text(pDX, IDC_EDIT1, m_strEdit);DDV_MaxChars(pDX,

17、m_strEdit, 20);/AFX_DATA_MAP(5)为一个控件定义一个关联的数据成员变量后,就可以使用CWnd:UpdateData控件 相关数据的输入和读取True:控件传给变量False:变量传给控件函数实现控件的控制,包括控件相关数据的输入和读取。运行该程序,当在编辑框中输入 “Hello后,单击Button1按钮,则此时该按钮的名称就变成了编辑框控件中的内容 “ Hello如图。void c123:O nButto n1() c123-butto n1 clickUpdateData();m_mybt n.SetWi ndowText(m_stredit);523控件的通用属

18、性524控件的消息控件的编程和使用过程中,可以向控件发送消息来完成特定的任务,或者是根据控件 产生的消息执行自己的代码(主要)。应用程序创建一般控件或公共控件之后,控件的状态发生改变时,控件就会向其父窗 口发送消息,这个消息称为 通知消息”对于每个消息,系统都会用一个 MSG结构来记 录,MSG具有下列结构:typedef struct tagMSG II msgHWND hwnd; II接收到消息的窗口句柄UINT message; II 消息WPARAM wParam; II消息的附加信息,它的含义取决于 messageLPARAM IParam; II消息的附加信息,它的含义取决于 me

19、ssage DWORD time; II消息传送时的时间POINT pt; II消息传送时,光标的屏幕坐标 MSG;对于一般控件来说,通知消息通常是一条 WM_COMMAND消息,这条消息的wParam 参数的低位字中含有控件标识符,wParam参数的高位字则为通知代码,IParam参数则是 指向控件的句柄。对于公共控件,通知消息通常是一条 WM_NOTIFY消息,wParam参数是发送通知消 息的控件的标识符,IParam参数是指向NMHDR结构的指针。对于有些控件的通知消息, IParam参数是指向一个更大的结构,且结构中的第一个成员还必须具有 NMHDR结构。对于控件的 WM_COMMA

20、ND 或是 WM_NOTIFY 消息,都可以用ClassWizard对它们 加以映射。尽管控件的各自通知消息并不相同,但下列的通知消息是所有 Windows控件所共有的:NM_CLICK在控件中单击鼠标左按钮NM_DBLCLK在控件中双击鼠标左按钮NM_RCLICKNM_RDBLCLK在控件中双击鼠标右按钮NM_RETURN当控件具有输入焦点时按下 ENTER键NM_SETFOCUS控件得到输入焦点NM_KILLFOCUS控件失去输入焦点NM_OUTOFMEMORY 没有足够的内存使控件完成操作添加消息映射类向导c123-c123-o ncomma nd:BOOL c123:O nComma

21、nd(WPARAM wParam, LPARAM IParam)IITODO: Add your specialized code here and/or call the base classWORD aa二HIWORD(wParam);WORD bb二LOWORD(wParam);if(bb=IDC_BUTTON2 )&( aa=BN_CLICKED)MessageBox(abcretur n CDialog:O nComma nd(wParam, IParam);5.3常用控件根据控件的特性和功能,一般可将其分为三类: Windows公共控件、ActiveX控件以及MFC新增的一些控件等

22、。5.3.1静态控件和按钮静态控件一个静态控件是用来显示一个字符串、框、矩形、图标、位图或增强的图元文件。它可 以被用来作为标签、框或用来分隔其它的控件。一个静态控件一般不接收用户输入,也 不产生通知消息。在对话框编辑器的控件工具栏中,属于静态控件的有:静态文本 ( )、组框( )和静态图片(添加bmp图片资源设置图片为bmp格式选择)( )三种。按钮(1)按键按钮通常可以立即产生某个动作,执行某个命令,常被称为命令按钮。两种风格:标准按 键按钮和默认按键按钮。从外观上来说,默认按键按钮是在标准按键按钮的周围加上一 个黑色边框,这个黑色边框表示该按钮已接受到键盘的输入焦点,只须按回车键就能按

23、下该按钮。具体设定的方法是在按键按钮属性对话框的 Style页面中选中“ Defaultbutton项。(2)单选按钮外形是在文本前有一个圆圈,被选中时,就标上一个黑点,可分为一般和自动两种类 型。自动类型中,若选中同组按钮中的某个单选按钮,则其余的单选按钮的选中状态就 会清除,保证了多个选项始终只有一个被选中。(3)复选框外形是在文本前有一个空心方框,被选中时,复选框中就加上一个 ? ”标记,三态复选框还有种处于灰框状态,表示不确定”设定成三态复选框的方法是在复选框属性对话 框的Style页面中选中“ Tristate项。按钮的消息常见的只有两个:BN_CLICKED 禾口 BN_DOUBL

24、E- CLICKED。按钮选中操作最常用的按钮操作是设置或获取一个或多个按钮的选中状态。 CButton类的成员函数SetCheck和GetCheck设置或获取指定按钮的选中状态,原型:void SetCheck( int nCheck );int GetCheck( ) const;nCheck和GetCheck函数返回的值可以是:0表示不选中,1表示选中,2表示不确定 (仅用于三态按钮)。对于多个单选按钮的选中状态的设置或获取,需要使用 CWnd类的成员函数CheckRadioButton 和 GetCheckedRadioButton,原型:void CheckRadioButto n(

25、 int nIDFirstButt on, i nt nIDLastButto n, int n IDCheckButt on );int GetCheckedRadioButt on( int nIDFirstButt on, i nt nIDLastButton );nIDFirstButton和nIDLastButton指定这组单选按钮的第一个和最后一个按钮 ID值,nIDCheckButton指定要设置选中状态的按钮 ID值,函数 GetCheckedRadioButton返回被 选中的按钮ID值。例Ex_Ctrls1用静态图片、单选按钮、复选框和按键按钮控件,设计界面。开始, 所有单

26、选按钮都是灰显的,不能选择,选中 允许”复选框后,所有单选按钮可以使用,选定一个单选框后,单击应用。(1)用MFC AppWizard(exe)创建一个名为Ex_CommCtrls的基于对话框的应用程序。在 创建的第一步,将应用程序类型选择为 Dialog Based,按Finish。自动显示出该程序的对 话框资源模板内容。(2)打开属性对话框将其标题改为 使用Windows常用控件”。(3)用编辑器为对话框添加如下表所示的一些控件。四个单选按钮的Tab次序应连续,从IDC_RADIO1到IDC_RADIO4依次增加。(5)按 Ctrl+W 快捷键,切换到 Member Variables页面

27、,在 Class name中选择CEx_CommCtrlstDlg ,选中复选框控件ID号IDC_CHECK1,双击鼠标或单击 Add Variables按钮。(6)切换到 ClassWizard的 Messsage Maps页面,为复选框 IDC_CHECK1和按钮 IDC_BUTT0N1增力口 BN_CLICKED的消息映射,添加代码:void CEx_CommCtrlsDlg:O nCheck1() UpdateData();for (i nt i=0; iE nableWi ndow(m_bE nabled);if (!m_bE nabled) retur n;int nID = GetCheckedRadioButt on (IDC_RADIO1, IDC_RADIO4);if (nID = IDC_RADIO1) MessageBox(1 if (nID = IDC_RADIO2) Messag

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1