对话框和常用控件Word文档下载推荐.docx

上传人:b****6 文档编号:16385104 上传时间:2022-11-23 格式:DOCX 页数:78 大小:212.35KB
下载 相关 举报
对话框和常用控件Word文档下载推荐.docx_第1页
第1页 / 共78页
对话框和常用控件Word文档下载推荐.docx_第2页
第2页 / 共78页
对话框和常用控件Word文档下载推荐.docx_第3页
第3页 / 共78页
对话框和常用控件Word文档下载推荐.docx_第4页
第4页 / 共78页
对话框和常用控件Word文档下载推荐.docx_第5页
第5页 / 共78页
点击查看更多>>
下载资源
资源描述

对话框和常用控件Word文档下载推荐.docx

《对话框和常用控件Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《对话框和常用控件Word文档下载推荐.docx(78页珍藏版)》请在冰豆网上搜索。

对话框和常用控件Word文档下载推荐.docx

b)双击IDR_MAINFRAME

c)双击右边空白菜单,点开pop_up(让它是空白),在名字处写”弹出对话框(&

A)”,ID处写ID_PUPDIALOG

6)将菜单命令连接到主框架程序中,完成ID_PUPDIALOG的消息映射:

ViewClassWizard保证Classname里是CMainFrame,在ObjectIDs

里找到ID_PUPDIALOG点黑Messages里(右边)点COMMAND建立主框架对象方法并加代码:

voidCMainFrame:

:

OnPupdialog()

{CMyDlgMyDlg;

MyDlg.DoModal();

//DoModal()是CDialog类成员函数,通过调用该

//函数将显示对话框。

}

7)在CMainFrame.cpp文件里加:

#include“MyDlg.h”//之后运行。

例2:

无模式对话框(为175页附加举例)

非模式对话框,弹出后,可一直保留在屏幕上,用户可继续在应用中进行其它操作或启动其它应用程序,当需要使用对话框时,只需象激活一般窗口一样激活对话框即可。

1)建一个SDI(单文档)应用程序

2)创建对话框模板

InsertResource点黑DialogNew

拖过一个静态文本,鼠标对准它,按右键点properties改标题为“新建非模式对话框”。

3)为对话框创建类

点出对话框(IDD_DIALOG1缺省的ID号),双击对话框中的任意位置,出现一个表,你点OK出现一个对话框,你写类名:

CDlg保证基类为CDialog

4)创建菜单

打开工作区MenuIDR_MAINFRAME双击空白菜单写“非模式对话框”关闭再点下面空菜单写名字“显示非模式对话框”ID处写ID_DLG.

5)添加菜单命令消息

WiewClassWizardMessageMaps保证Classname里是Wiew类(视图类),在ObjectIDS里找到ID_DLG(菜单的ID)点黑右边COMMAND双击它OK

6)a、你在Wiew.h里加:

#include“Dlg.h”

b、在public:

里加:

CDlg*dlg;

//创建CDlg对象

c、在View.cpp的OnDlg()函数里加:

CMyView:

OnDlg()

{

dlg=newCDlg(this);

dlg->

Create(IDD_DIALOG1);

//使对话框摸板从资源中创建一个非

//模式对话框

ShowWindow(SW_RESTORE);

//显示对话框

}

4.1.1资源与资源标识

VisualC++6.0将Windows应用程序中经常用到的菜单、工具栏、对话框、图标等都视为“资源”,并将其单独存放在一个资源文件中。

每个资源都由相应的标识符来区分,并且可以象变量一样进行赋值。

1.资源的分类

建一个单文档应用程序“资源”,然后将项目工作区切换到“ResourceView”页面,展开所有的节点,如书164页图4.1所示:

一个单文档应用程序所使用的资源可分为以下几类:

(1)快捷键列表(Accelerator):

快捷键列表为一系列组合键的集合,被应用程序用于引发一个动作。

该列表一般与菜单命令相关联,用于代替鼠标操作。

(2)对话框(Dialog):

为含有按钮、列表框、编辑框等各种控件的窗口。

(3)图标(Icon):

图标是代表应用程序显示在Windows桌面上的位图,它同时有32*32像素和16*16像素2种规格。

(4)菜单(Menu):

用户通过菜单可以完成应用程序的大部分操作。

(5)字串表(StringTable):

是应用程序使用的全局字符串或其他标识符。

(6)工具栏按钮(Toolbar):

是由一系列具有相同尺寸的位图组成的,它通常与一些菜单命令相对应,用于提高用户的工作效率。

(7)版本信息(Version):

版本信息包含应用程序的版本、用户注册码等相关信息。

除了上述常用资源类别外,VisualC++6.0应用程序中还可有鼠标指针、HTML等,也可以自己添加新的资源类别。

2.ID标识符

书164页图4.1中,可以看到每一个资源类别都有一个或多个相关资源,每一个资源均是由标识符来定义的。

当添加或创建一个新的资源或资源对象时,系统会为其提供默认的名称,如:

IDR_MAINFRAME等。

当然,用户也可重新命名,但要按一定的规则来进行,这样便于在应用程序代码设计时理解和记忆。

一般要遵循下列规则:

(1)在标识符名称中允许使用字母a~z、A~Z、0~9以及下划线“_”。

(2)标识符名称不区分大小写字母,如new_idd与New_Idd是相同的标识符。

(3)不能以数字开头,如8BIT是不合法的标识符。

除了上述规则外,出于习惯,VisualC++还提供了一些常用标识符定义的前缀,供用户使用(见165页表4.1)

IDR_表示快捷键或菜单相关资源

IDD_表示对话框资源

IDC_表示光标资源或控件

IDI_表示图标资源

IDM_表示菜单项

ID_表示命令项

IDS_表示字符表中的字符串

IDP_表示消息框中使用的字符串

每一个定义的标识符都保存在应用程序项目的Resource.h文件中,它的取值范围为0~65535。

在同一个程序项目中,资源标识符名称不能一样,不同的标识符的值也不能一样。

**使用对话框编辑器(对话框编程)

*4.1.2添加对话框资源:

可建一个单文档应用程序名为“对话框编程”,在此程序中加入一个对话框:

InsertResource点黑Dialognew

*4.1.4添加和布局控件:

拖入一些控件,对这些控件进行排序、布局、大小调整、上下对齐、测试等(见书170页图4.8所示控件布局工具栏)*最后在对话框IDD_DIALOG1上留一个按钮控件,其ID标识符为:

IDC_BUTTON1。

可按书171页最上的4、测试一下对话框。

*识别控件工具栏(168页)控件工具栏及各按钮含义:

(168页)

1)控件的选择2)静态文本3)组框4)复选框5)组合框6)水平滚动条

7)旋转按钮8)滑动条9)列表视图10)标签11)复合编辑12)月历

13)用户定制工具14)静态图片15)编辑框16)按钮17)单选框18)列表框

19)垂直滚动条20)进展条21)热键22)树形视图23)动画24)日期选择

25)IP地址26)组合框的扩展(从左边往下数,再从右边往下数)

*对话框资源类别:

在加对话框时,InsertResource点开+Dialog见有7类对话框,分别了解其不同用途(见166页)

4.1.3设置对话框的属性

A、ViewPropertiesB、按Alt+EnterC、用鼠标右键单击对话框模板Properties

都能弹出对话框的属性框,见书167页对属性General的解释。

General(一般属性)、Styles(风格)、MoreStyles(更多风格)、ExtendedStyles(扩展风格)、

MoreExtendedStyles(更多扩展风格)等部分。

下面介绍常用的General属性:

ID框修改或选择对话框的标识符名称(如改成:

IDD_MYDIALOG)

Caption(标题栏)输入对话框的标题名称,中英文均可(我的对话框)

Font…字体按钮单击此按钮可选择字体的种类(宋体)以及字体的大小(如:

9号字)

(设置成:

宋体大小为:

9)

Xpos/Ypos对话框左上角在父窗口中的X、Y坐标,都为0时表示居中

菜单框Menu默认值为无,当对话框需要菜单时,输入或选择指定的菜单资源

Classname默认值为无,它提供C/C++语言编程时所需要的对话框类名,对

MFC类库的资源文件来说,该项不被激活

*为对话框添加类(171页)

对准对话框的任意非控件区域双击鼠标,将弹出书171页图4.12所示的对话框,询问是否为对话框资源创建一个新类单击OK弹出书172页图4.13所示的对话框你定义一个新类的名字如:

CMyDlg(注意:

类名必须以C打头),下面的基类Baseclass和ID标识符DialogID内容一般不改。

*添映射消息

ViewClassWizard出现“MFCClassWizard”对话框在Classname处选择CMyDlg在ObjectIDs里选定点黑IDC_BUTTON1单击BN_CLICKED消息AddFunctionOKEditCode(到MyDlg.cpp文件中)

*添加用户代码

接上,在MyDlg.cpp文件中,写:

voidCMyDlg:

OnButton1()

{

MessageBox(“欢迎进入对话框的设计!

”);

}//这时运行还不见对话框,接下

*在程序中调用对话框(173页)

由于对话框的代码是以类为模块来设计的,使用时需要在程序中加入该类的头文件,并定义一个类对象,然后就可以使用该类的相关成员。

项目工作区FileView打开应用程序的.cpp文件,在前面加:

#include“MyDlg.h”

在InitInstance函数体中的returnTRUE语句之前添加下列代码:

CMyDlgdlg;

dlg.DoModal();

//DoModal()函数是负责对话框的显示和终止。

运行!

则直接显示出对话框,单击按钮则出现“欢迎进入对话框的设计”的字样。

本例建的CMyDlg类及以后在各个项目中建立的类,在文档、视图、主框架类中都可同样使用。

*控件的删除、复制和布局

当单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的选择框可移动控件。

若在鼠标拖动过程中还按住Ctrl键则复制控件。

若按Del键可将选取的控件删除。

*主控件(多个控件以其为主)的设置方法是按住Ctrl键或Shift键,然后用鼠标单击所要指定的控件即可。

*网格、标尺等辅助工具,见书170页图4.8(及表4.4)所示及说明

*测试对话框,见书171页最上面的说明

书上172页“添加对话框代码”的过程是:

1)为该项目添加一个对话框

2)为这个对话框加类,类名为:

CMyDlg

3)在对话框上加一个静态控件Static,将其ID改为IDC_STATIC_1,并拉的较长些

4)在CMyDlg类中,加WM_INITDIALOG映射消息,并加下列代码:

CStatic*pWnd=(CStatic*)GetDlgItem(IDC_STATIC_1);

pWnd->

SetWindowText("

欢迎你进入对话框的设计!

"

);

5)也要在应用程序的执行文件(文件名.cpp)前面加:

#include"

MyDlg.h"

4)也要在应用程序的执行文件(文件名.cpp)return前面加:

CMyDlgdlg;

这时才能在Static控件上就显示"

字样。

代码中,CStatic是静态文本控件的MFC类,SetWindowText是CWnd的一个成员函数,用于设置窗口的文本内容。

由于控件类是CWnd的子类(派生类),因此可以使用基类的SetWindowText来改变静态文本控件显示的内容。

GetDlgItem也是CWnd类的一个成员函数,用于获得对话框中控件(参数是控件的ID标识符,这里是IDC_STATIC_1)的窗口指针。

在这里,如果我们象在模式对话框和非模式对话框中,直接在静态控件的属性里写"

,那就简单多了,故这种做法不提倡。

4.2控件的创建和使用方法(177页)

控件是在系统内部定义的能够完成特定功能的控制程序单元。

在应用程序中使用控件不仅简化了编程,还能完成常用的各种功能。

为了更好地发挥控件的作用,用户还必须理解和掌握控件的属性、消息以及创建和使用方法。

4.2.1控件的创建方法

控件的创建方法有2种:

(1)是在对话框摸板中用编辑器指定控件,也就是说,将控件的父窗口指定为对话框,如:

上面的BUTTON1按钮控件。

(2)是将控件看做任意一窗口的子窗口,并通过调用相应的Create函数来创建。

下面我们用第2种方法创建控件(此方法涉及到的编程内容比较复杂,且不能发挥对话框编辑器可视化的优点,故不提倡此种方法,而提倡第一种方法即在对话框模板中用编辑器指定控件)。

(1)打开上个项目,在CMyDlg类的头文件MyDlg.h里添加一个按钮类CButton的指针变

量:

(public:

里)

CButton*m_btnWnd;

(2)按Ctrl+W或ViewClassWizard打开MFClassWizard对话框,并切换到MessageMaps

页面,在ObjectIDs列表中选定点黑CMyDlg项,并在Message列表中找到WM_INITDIALOG

消息点黑AddFunctionEditCode(上例中已经做了此步)

(3)添加代码:

BOOLCMyDlg:

OnInitDialog()

{-----

m_btnWnd=newCButton();

//构造按钮控件

//下面“”按钮上的字,创建子窗口|窗口最初是可见的|创建的是按键按钮

m_btnWnd->

Create(“你好”,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,

CRect(20,20,120,60),this,201);

//创建

CFont*font=this->

GetFont();

//获取对话框的字体

SetFont(font);

//设置控件字体

returnTRUE;

//(程序原有的)

}

(4)编译并运行,结果见书179页图4.26所示。

由于OnInitDialog函数在对话框初始化时被调用,因此将对话框中的一些初始化代码都添加在此函数中。

代码中,Create用来创建一个按钮控件,该函数的第一个参数用来指定该按钮的标题,第二个参数用来指定控件的风格,第三个参数用来指定它在父窗口中的位置和大小,第四个参数用来指定父窗口指针,最后一个参数是指定该控件的标识值。

Create函数的参数中,WS_CHILD、WS_VISIBLE和BS_PUSHBUTTON都是VisualC++6.0系统内部定义的标识符,可以直接引用,由于按钮是作为对话框的一个子窗口来创建的,因此其风格必须有WS_CHILD(子窗口风格)。

WS_CHILD表示按钮是作为对话框的一个子窗口来创建的。

WS_VISIBLE是使控件可见。

BS_PUSHBUTTON表示创建的是按键按钮。

书上178页的“使用控件的编程方式来创建一个按钮”是建一个对话框的应用程序完成的。

过程如下:

1)建一个基于对话框的应用程序,名为:

创建控件

打开VC系统FileNewMFCAppWizard(exe)Location处写路径名Projectname处写文件名:

创建控件OK选中DialogbasedFinish这样就建了一个基于对话框的应用程序。

2)将项目工作区切换到ClassView页面,并展开CMyDlg类右键对准CMyDlg单击鼠标便弹出如书178页图4.24的快捷菜单从快捷菜单中选择AddMemberVariable(添加成员变量),在出现的对话框中定义一个CButton类对象m_btnWnd(在VariableType处写:

CButton在

VariableName处写:

m_btnWnd)(通常以”m_”作为变量的开头,表示”成员”的意思。

如书179页图4.25所示。

3)还是在ClassView页面中,再双击OnInitDialog函数名,在右侧便出现这个函数,你在

它的returnTRUE;

前面加如下代码:

m_btnWnd.Create("

你好"

WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,

CRect(20,20,120,60),this,201);

//创建控件

m_btnWnd.SetFont(font);

4.2.2控件的消息及消息映射

当控件的状态发生改变时,控件旧会向其父窗口发送消息,这个消息称为“通知消息”。

对于每个消息,系统都会用一个MSG结构来记录。

MSG具有下列结构:

TypedefstructtagMSG

{HWNDhwnd;

//接收到消息的窗口句柄注意:

前面的数据类型见//145—146页,窗口句柄

UINTmessage;

//消息,32位无符号整数

WPARAMwParam;

//消息的附加信息,它的含义取决于message

//当做参数传递给窗口过程或回调函数的32位值

LPARAMlParam;

//作为参数传递给窗口过程或回调函数的32位值

DWORDtime;

//消息传送时的时间

//32位无符号整数,段地址和相关的偏移地址

POINTpt;

//消息传送时,光标所在的屏幕坐标。

POINT点是类

}MSG;

对于一般控件来说,其通知消息通常是一条WM_COMMAND消息,这条消息的wParam参数的低位字中含有控件标识符,wParam参数的高位字则为通知代码,lParam参数则是指向控件的句柄。

而对于有些控件,其通知消息通常是一条WM_NOTIFY消息,这条消息的wParam参数是发送通知消息的控件的标识副符,而lParam参数则是指向一个结构指针。

不管是什么控件消息,一般都可以用MFCClassWizard对它们加以映射。

1、映射控件消息

A、建一个基于对话框的应用程序(或用上一个程序),名为:

映射控件消息

B、将项目工作区窗口切换到ResourseView页面,打开Dialog,双击IDD_MY_DIALOG

C、删除上面的一个原有控件“TODO……..”,添加一个按钮控件(Button),保留其默认

属性如书180页图4.27所示。

D、ViewClassWizard保证Classname处是CMyDlg在IDs列表中选择IDC_BUTTON1(这是添加按钮后,系统自动为这个按钮设置的标识符)在Messages框中选择

BN_CLICKED消息单击”AddFunction”按钮或双击BN_CLICKED消息,出现”Add

MemberFunction”对话框,在这里可以输入成员函数的名称,系统默认的函数名为

OnButton1,如书181页图4.28所示。

说明:

(1)不同资源对象(控件、菜单等命令)所产生的消息是不相同的。

例如,按钮

控件IDC_BUTTON1的消息有2个:

BN_CLICKED和BN_DOUBLECLICKED,分别

表示当用户单击或双击该按钮时产生的消息。

(2)一般不需要对对话框中的“OK”(确定)和”Cancel”(取消)进行消息映射,

系统已自动设置了这2个按钮的动作,当用户单击这2个按钮都将自动关闭对话框,而

“OK”按钮动作还使得对话框数据有效。

E、单击“OK”按钮,在MFCClassWizard的”Memberfunctions”列表中将列出新增加的成

员函数,选择此函数,单击“EditCode”按钮(或直接在函数名双击鼠标),开发环境

的文档窗口中将自动打开该函数所在的源代码文件,并定位到该函数的实现代码处。

此成员函数中添加下列代码:

OnButton1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

MessageBox("

你按下了\"

Button1\"

按钮!

"

2、映射控件通用消息

上述过程是映射一个控件的某一个消息,事实上也可以通过WM_COMMAND消息的映射来处理一个或多个控件的通用消息,步骤如下:

A、打开“MFCClassWizard”对话框,在“Classname”列表中选择CMyDlg,在IDs列表

中也选择CMyDlg,在Messages框中找到OnCommand双击(或点EditCode),这样在CMyDlg类中就添好了OnCommand消息函数,如书182页图4.29所示。

由于OnCommand函数是一个用于处理WM_COMMAND消息的虚函数,因此这里添加的OnCommand函数事实上是一个在类中实际调用的函数,,可称为“实例函数”。

这样的映射操作,可以称之为“对虚函数OnCommand的重载”。

B、在OnCommand函数中添加下列代码:

OnCommand(WPARAMwParam,LPARAMlParam)

Addyourspecializedcodehereand/orcallthebaseclass

WORDnCode=HIWORD(wParam);

//用于获取32位数值中的高位(146页)

WORDnID=LOWORD(wParam);

//用于获取32位数值中的低位,控件的ID值

if((nID==201)&

&

(nCode==BN_CLICKED))

你好\"

if((nID==IDC_BUTTON1)&

(nCode==BN_CLICKED

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

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

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