文档库 最新最全的文档下载
当前位置:文档库 › 对话框和常用控件

对话框和常用控件

对话框和常用控件
对话框和常用控件

第4章对话框和常用控件

对话框是Windows应用程序中最重要的用户界面元素之一,是与用户交互的重要手段,在程序运行过程中,对话框可用于扑捉用户的输入信息或数据。对话框是一个特殊类型的窗口,任何对窗口进行的操作(如:移动、最大化、最小化等)都可在对话框中实施,一般来说,在对话框中通过各种控件(如:按钮、编辑框、列表框、组合框等)来和用户进行交互。控件是在系统内部定义的用于和用户交互的基本单元。

4.1对话框的使用

Visual C++提供的对话框编辑器能“可视”地进行设计、编辑,并可用ClassWizard为对话框从CDialog基类中派生一个类,MFC的CDialog类封装了用于对话框的显示、关闭等操作的许多功能函数,例如:DoModal函数用来显示模式对话框并返回用户操作的结果。

在Visual C++6.0应用程序中,使用一个对话框的一般过程是:(1)添加对话框资源;(2)设置对话框的属性;(3)添加和布局控件;(4)创建对话框类;(5)添加对话框代码;(6)在程序中调用对话框。例如:

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

所谓模式对话框是指,当对话被弹出时,用户必须在对话框中进行相应的操作,在退出对话框之前,对话框所在的应用程序不能继续执行。平常我们所见到的对话框大多是模式对话框。

例:模式对话框(通过菜单命令弹出)

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

2)创建对话框模板

Insert→Resource→选中Dialog→单击New

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

3)鼠标右键对准对话框的任何位置单击,选择properties选项,设置ID为IDD_MYDIALOG 4)给对话框创建类

双击新建对话框的任何位置,单击OK,写类名为“CMyDlg”,保

证”CDialog”作为该类的基类。

5)创建菜单命令:

a)打开资源编辑器的菜单项Menu

b)双击IDR_MAINFRAME

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

6)将菜单命令连接到主框架程序中,完成ID_PUPDIALOG的消息映射:View→ClassWizard→保证Class name里是CMainFrame,在ObjectIDs

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

void CMainFrame::OnPupdialog()

{ CMyDlg MyDlg;

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

//函数将显示对话框。

}

7)在CMainFrame.cpp文件里加:

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

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

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

2)创建对话框模板

Insert→Resource→点黑Dialog→New

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

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

4)创建菜单

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

5)添加菜单命令消息

Wiew→ClassWizard→Message Maps→保证Class name里是Wiew类(视图类),在Object IDS里找到ID_DLG(菜单的ID)点黑右边COMMAND双击它→OK

6)a、你在Wiew.h里加:#include “Dlg.h”

b、在public:里加:CDlg *dlg;//创建CDlg对象

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

CMyView::OnDlg()

{

dlg=new CDlg(this);

dlg->Create(IDD_DIALOG1);//使对话框摸板从资源中创建一个非

//模式对话框

dlg->ShowWindow(SW_RESTORE);//显示对话框

}

4.1.1资源与资源标识

Visual C++6.0将Windows应用程序中经常用到的菜单、工具栏、对话框、图标等都视为“资源”,并将其单独存放在一个资源文件中。每个资源都由相应的标识符来区分,并且可以象变量一样进行赋值。

1.资源的分类

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

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

(1)快捷键列表(Accelerator):快捷键列表为一系列组合键的集合,被应用程序用于引发一个动作。该列表一般与菜单命令相关联,用于代替鼠标操作。

(2)对话框(Dialog):为含有按钮、列表框、编辑框等各种控件的窗口。

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

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

(5)字串表(String Table):是应用程序使用的全局字符串或其他标识符。

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

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

除了上述常用资源类别外,Visual C++6.0应用程序中还可有鼠标指针、HTML等,

也可以自己添加新的资源类别。

2.ID标识符

书164页图4.1中,可以看到每一个资源类别都有一个或多个相关资源,每一个资源均是由标识符来定义的。当添加或创建一个新的资源或资源对象时,系统会为其提供默认的名称,如:IDR_MAINFRAME等。当然,用户也可重新命名,但要按一定的规则来进行,这样便于在应用程序代码设计时理解和记忆。一般要遵循下列规则:

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

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

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

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

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

IDD_ 表示对话框资源

IDC_ 表示光标资源或控件

IDI_ 表示图标资源

IDM_ 表示菜单项

ID_ 表示命令项

IDS_ 表示字符表中的字符串

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

每一个定义的标识符都保存在应用程序项目的Resource.h文件中,它的取值范围为0~65535。在同一个程序项目中,资源标识符名称不能一样,不同的标识符的值也不能一样。**使用对话框编辑器(对话框编程)

*4.1.2添加对话框资源:可建一个单文档应用程序名为“对话框编程”,在此程序中加入一个对话框:Insert→Resource→点黑Dialog→new

*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)组合框的扩展(从左边往下数,再从右边往下数)

*对话框资源类别:在加对话框时,Insert→Resource→点开+Dialog见有7类对话框,分别了解其不同用途(见166页)

4.1.3设置对话框的属性

A、View→Properties

B、按Alt+Enter

C、用鼠标右键单击对话框模板→Properties

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

General(一般属性)、Styles(风格)、More Styles(更多风格)、Extended Styles(扩展风格)、More Extended Styles(更多扩展风格)等部分。下面介绍常用的General属性:

ID框修改或选择对话框的标识符名称(如改成:IDD_MYDIALOG)Caption(标题栏) 输入对话框的标题名称,中英文均可(我的对话框)

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

(设置成:宋体大小为:9)

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

菜单框Menu 默认值为无,当对话框需要菜单时,输入或选择指定的菜单资源Class name 默认值为无,它提供C/C++语言编程时所需要的对话框类名,对

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

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

对准对话框的任意非控件区域双击鼠标,将弹出书171页图4.12所示的对话框,询问是否为对话框资源创建一个新类→单击OK→弹出书172页图4.13所示的对话框→你定义一个新类的名字如:CMyDlg(注意:类名必须以C打头),下面的基类Base class和ID标识符Dialog ID内容一般不改。

*添映射消息

View→ClassWizard→出现“MFC ClassWizard”对话框→在Class name处选择CMyDlg →在Object IDs里选定点黑IDC_BUTTON1→单击BN_CLICKED消息→Add Function→OK→Edit Code (到MyDlg.cpp文件中)

*添加用户代码

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

void CMyDlg::OnButton1()

{

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

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

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

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

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

#include “MyDlg.h”

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

CMyDlg dlg;

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前面加:

CMyDlg dlg;

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

这时才能在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或View→ClassWizard打开MFClassWizard对话框,并切换到Message Maps 页面,在Object IDs列表中选定点黑CMyDlg项,并在Message列表中找到WM_INITDIALOG 消息点黑→AddFunction→EditCode(上例中已经做了此步)

(3)添加代码:

BOOL CMyDlg::OnInitDialog()

{ -----

m_btnWnd=new CButton();//构造按钮控件

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

m_btnWnd->Create(“你好”,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,

CRect(20,20,120,60),this,201);//创建

CFont *font=this->GetFont();//获取对话框的字体

m_btnWnd->SetFont(font);//设置控件字体

return TRUE;//(程序原有的)

}

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

由于OnInitDialog函数在对话框初始化时被调用,因此将对话框中的一些初始化代码都添加在此函数中。代码中,Create用来创建一个按钮控件,该函数的第一个参数用来指定该按钮的标题,第二个参数用来指定控件的风格,第三个参数用来指定它在父窗口中的位置和大小,第四个参数用来指定父窗口指针,最后一个参数是指定该控件的标识值。Create函数的参数中,WS_CHILD、WS_VISIBLE和BS_PUSHBUTTON都是Visual C++6.0系统内部定义的标识符,可以直接引用,由于按钮是作为对话框的一个子窗口来创建的,因此其风格必须有WS_CHILD(子窗口风格)。

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

WS_VISIBLE是使控件可见。

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

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

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

打开VC系统→File→New→MFC AppWizard(exe)→Location处写路径名→Project name 处写文件名:创建控件→OK→选中Dialog based→Finish这样就建了一个基于对话框的应用程序。

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

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

如书179页图4.25所示。

3)还是在ClassView页面中,再双击OnInitDialog函数名,在右侧便出现这个函数,你在它的return TRUE;前面加如下代码:

m_btnWnd.Create("你好",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,

CRect(20,20,120,60),this,201);//创建控件

CFont *font=this->GetFont();//获取对话框的字体

m_btnWnd.SetFont(font);//设置控件字体

4.2.2控件的消息及消息映射

当控件的状态发生改变时,控件旧会向其父窗口发送消息,这个消息称为“通知消息”。对于每个消息,系统都会用一个MSG结构来记录。MSG具有下列结构:

Typedef struct tagMSG

{ HWND hwnd; //接收到消息的窗口句柄注意:前面的数据类型见

//145—146页,窗口句柄

UINT message; //消息,32位无符号整数

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

//当做参数传递给窗口过程或回调函数的32位值LPARAM lParam; //消息的附加信息,它的含义取决于message

//作为参数传递给窗口过程或回调函数的32位值DWORD time; //消息传送时的时间

//32位无符号整数,段地址和相关的偏移地址 POINT pt; //消息传送时,光标所在的屏幕坐标。POINT点是类

}MSG;

对于一般控件来说,其通知消息通常是一条WM_COMMAND消息,这条消息的wParam 参数的低位字中含有控件标识符,wParam参数的高位字则为通知代码,lParam参数则是指向控件的句柄。而对于有些控件,其通知消息通常是一条WM_NOTIFY消息,这条消息的wParam参数是发送通知消息的控件的标识副符,而lParam参数则是指向一个结构指针。不管是什么控件消息,一般都可以用MFC ClassWizard对它们加以映射。

1、映射控件消息

A、建一个基于对话框的应用程序(或用上一个程序),名为:映射控件消息

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

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

属性如书180页图4.27所示。

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

BN_CLICKED消息→单击”Add Function”按钮或双击BN_CLICKED消息,出现”Add Member Function”对话框,在这里可以输入成员函数的名称,系统默认的函数名为

OnButton1,如书181页图4.28所示。

说明:(1)不同资源对象(控件、菜单等命令)所产生的消息是不相同的。例如,按钮控件IDC_BUTTON1的消息有2个:BN_CLICKED和BN_DOUBLECLICKED,分别表示当用户单击或双击该按钮时产生的消息。

(2)一般不需要对对话框中的“OK”(确定)和”Cancel”(取消)进行消息映射,系统已自动设置了这2个按钮的动作,当用户单击这2个按钮都将自动关闭对话框,而“OK”按钮动作还使得对话框数据有效。

E、单击“OK”按钮,在MFC ClassWizard的”Member functions”列表中将列出新增加的成

员函数,选择此函数,单击“Edit Code”按钮(或直接在函数名双击鼠标),开发环境的文档窗口中将自动打开该函数所在的源代码文件,并定位到该函数的实现代码处。在此成员函数中添加下列代码:

void CMyDlg::OnButton1()

{

// TODO: Add your control notification handler code here

MessageBox("你按下了\"Button1\"按钮!");

}

2、映射控件通用消息

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

A、打开“MFC ClassWizard”对话框,在“Class name”列表中选择CMyDlg,在IDs列表

中也选择CMyDlg,在Messages框中找到OnCommand双击(或点Edit Code),这样在CMyDlg类中就添好了OnCommand消息函数,如书182页图4.29所示。由于OnCommand 函数是一个用于处理WM_COMMAND消息的虚函数,因此这里添加的OnCommand函数事实上是一个在类中实际调用的函数,,可称为“实例函数”。这样的映射操作,可以称之为“对虚函数OnCommand的重载”。

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

BOOL CMyDlg::OnCommand(WPARAM wParam, LPARAM lParam)

{

// TODO: Add your specialized code here and/or call the base class

WORD nCode=HIWORD(wParam);//用于获取32位数值中的高位(146页)

WORD nID=LOWORD(wParam);//用于获取32位数值中的低位,控件的ID值

if((nID==201)&&(nCode==BN_CLICKED))

MessageBox("你按下了\"你好\"按钮!");

if((nID==IDC_BUTTON1)&&(nCode==BN_CLICKED))

MessageBox("这是在OnCommand处理的结果!");

return CDialog::OnCommand(wParam, lParam);

}

//BN_CLICKED是当用户单击按钮产生的消息:

//WORD是16位无符号整数

//EN_CHANGE是编辑框中的文本被改变时发出的消息

C、编译并运行

说明:(1)由于该项目中“Button1”按钮的BN_CLICKED消息处理同时存在2种函数,即OnButton1和OnCommand,你单击Button1按钮,系统先执行OnCommand函数代码,然后执行OnButton1函数代码。因OnCommand函数的最后一句代码有“return CDialog::OnCommand(wParam,lParam);”,它的作用是将控件的消息交由对话框其它函数处理。所以你点2次Button1按钮,就出现你设置的BUTTON1的不同的2个信息。

(2)由于用Create创建的控件无法用MFC ClassWizard直接映射其消息,因此上述方法弥补了ClassWizard的不足,使用时要特别注意。

下面通知消息是所有Windows控件所共有的:

NM_CLICK 在控件中单击鼠标左键按钮

NM_DBLCLK 在控件中双击鼠标左键按钮

NM_RDBLCLK在控件中双击鼠标右键按钮

NM_RETURN当控件具有输入焦点时按下ENTER键

NM_SETFOCUS控件得到输入焦点

NM_KILLFOCUS控件失去输入焦点

NM_OUTOFMEMORY没有足够的内存使控件

4.2.3控件的数据交换(DDX)和数据效验(DDV)(182页)

为了能让用户直接方便地操作一个控件,MFC采用了独特的DDX和DDV技术,DDX 将数据成员变量与对话框模板内控件相连接,这样使得数据在控件之间很容易传输。DDV 用于数据的校验,例如它能自动校验数据成员变量数值的范围,并发出警告。

使用MFC ClassWizard可以很容易地定义一个控件的成员变量及其数据范围。例如:上面的CMyDlg类的按钮控件IDC_BUTTON1添加并使用其成员变量m_MyBtn的步骤如下:

(1)打开上例项目,View→ClassWizard→Member Variables→选定Class name 中为CMyDlg,然后在Control IDs列表中→点黑IDC_BUTTON1→AddVariable

(或双击鼠标左键),弹出Add Member Variable对话框→写好数据成员名:m_MyBtn见183页图4.31 (Category和Variables type里的不动)→OK→见184页图4.32

(2)再向对话框加一个编辑控件,并加成员变量m_strEdit,类型为CString (下面置:20) 数值为Value(注:Category框内可选择Value或Control两种类型。Control所对应的变量类型就是MFC为该控件封装的控件类。Value所对应的是数值类型。不同控件所提供的关联的数值类型各不同,例如:对于编辑框来说,Variables type中的数值类型有CString (字符串),int,UINT(32位无符号整数),long(32位带符号整数), DWORD(32位无符号整数,段地址和相关的偏移),float,double,BYTE(8位无符号整数),short,BOOL等)。按OK后在下面写20为最大值。(下面见书183—184页)

打开本项目的MyDlg.h见到:

CButton m_MyBtn;

CString m_strEdit;

在MyDlg.cpp的构造函数里见到:

m_strEdit=_T(““);

在DoDataExchange函数体内见:

DDX_Control(pDX,IDC_BUTTON1,m_MyBtn);

DDX_Text(pDX,IDC_EDIT1,m_strEdit);//IDC_EDIT1是ID标识,

//m_strEdit是成员变量,表示控件已是一个变量了。

DDV_MaxChars(pDX,m_strEdit,20);//校验m_strEdit的最大字符个数不超过20。(3)将CMyDlg::OnButton1()修改成:

void CMyDlg::OnButton1()

{

UpdateData();//默认参数值是真TRUE,数据从控件向相关联的成员变量复制//若UpdateData(FALSE),数据由控件相关联的成员变量向控件传输m_MyBtn.SetWindowText(m_strEdit);

//GetDlgItem(IDC_BUTTON1)->SetWindowText(“欢迎”);//用此条代替

//上条也行,

//单击Button1按钮,此按钮名就是“欢迎”。

}

之后运行该程序,当在编辑框输入Hello后,单击Button1按钮,则该按钮的名称就变成了编辑框中的内容Hello了,见书185图4.33所示。

*控件的通用属性

在控件的属性对话框中含有许多属性,如:书201页(按钮的属性对话框),General(一般属性)、Styles(控件的风格)、Extended Styles(控件的扩

展风格)。Styles和Extended Styles是用来设定控件的外观的、辅助功能的。

不同控件具有不同的风格和扩展风格。

控件的General属性:

ID:控件的标识符,每种控件都有默认的ID,例如按钮控件为IDC_BUTTON1 Caption:控件的标题,大多数控件都有默认的标题,例如按钮控件为Button1

Visible:指定控件初始化时是否可见

Group:指定控件组中的第一个控件,如果该项被选中,则此控件后的所有控件均被看成一组,成组的目的是可以让用户键盘方向键在同一组控件中进行切换

Help ID:若该项被选中,则为该控件建立一个上下文相关的帮助标识符

Disabled:指定控件初始化时是否禁用

TabStop:若该项被选中,则用户可以使用Tab键来选择控件

4.3常用控件

静态控件CStatic 用于向用户显示一些几乎固定不变的文字或图形描述

按钮CButton 用于产生某些命令或改变某些选项设置

编辑框CEdit 可完成文字的输入、输出双向操作,使用户能查看并编辑文字

列表框CListBox显示一个列表,让用户从中选取一个或多个项

组合框CComboBox它把列表框和编辑框有机地组合在一起,用户不仅能选择

列表中已有的项,还能编辑出新的项

滚动条CScrollBar通过滚动块在滚动条上的移动来改变某些数值

进展条CProgressCtrl 用于指示一个操作的进度

旋转按钮CSpinButtonCtrl 又称“上下控制”,是一对箭头按钮,用户单击它们

可以增加或减小某个值

滚动条CSliderCtrl 是一个包含一个滑动块和可选的刻度线,用户可以用鼠标或方向键沿某个方向移动滑动块

图象列表CImageList是一系列相同大小的图象的集合

标签控件CTabCtrl类似于一个笔记本的分割器或一个文件柜上的标签,使用它可以将一个窗口或对话框的相同区域定义为多个页面

4.3.1静态控件和按钮

1、静态控件

静态控件是用于显示一个字符、框、矩形、图标、位图或增强的图元文件,它可以用做标签、框或用于分隔其它的控件。一个静态控件一般不接受用户输入,也不产生通知消息。在对话框编辑器的控件工具栏中,属于静态控件的有:静态文本(Static Text)、

组框(Group Box)、图片控件(Picture)三种。其中,静态图片控件的属性对话框如:书186页图4.34所示,表4.6列出了其一般属性和风格的各个项的意义。我们可以选择Type(图片类型)、Image(图象资源)两个组合框中的有关选项内容,并可将应用程序资源中的图标、

位图等内容显示在该静态图片控件中。另外,用户还可设置其风格来改变控件的外观以及图象在控件的位置等。静态图片控件的General和Style属性对话框如下:

Type 图片类型,用户可以从中选择Frame(框)、Rectangle(矩形区域)、Icon(图标)、Bitmap(位图)、Enhanced Metafile(增强图元文件,它是各种绘图命令的集合) Image 当图片类型为Icon或Bitmap时,通过此框可选择指定的资源ID号设置Frame 和Rectangle的颜色,它可以是black(黑色)、white(白色)、gray(灰色)、或者是

具有3D外观的etched(腐蚀色)

Sunken 选中时,在控件的周围有下沉的边框

Notify 选中时,当用户单击或双击图片时会向其父窗口发出通知消息

Right justify 选中时,用户重置图片大小,图片右下角是固定不变的

Border 选中时,图片周围有边框

Center image 选中时,图片显示在控件中央,其余区域由图片左上角的象素

颜色来填充

Real size image选中时,按图片的原始大小来显示,超过控件区域的部分被裁剪在它的属性中,用户可以选择Type(图片)、Image(图象资源)两个组合框中的有关选项内容,并可将应用程序资源中的图标、位图等内容显示在该静态图片控件中,另外,用户还可以设置其风格来改变控件的外观以及图象在控件的位置等。

例1:静态控件(将一个.bmp图形显示在图片控件上)(为186页附加举例)

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

2)创建对话框模板:Insert→Resource→点黑Dialog→new

3)将图片控件Picture拖到对话框上,并拉大些,将OK和CANCEL拖到下面。

4)向项目中插入一个.bmp图片:Insert→Resource→点黑Bitmap→Import→在出现的表中要下拉出:所有文件(*.*)在某处找到一个.bmp图形→Import放到此项目中。

5)将这个图片放到图片控件上

右键对准图片控件单击→出现属性框→Type处下拉置Bitmap→image处下拉置IDB_BITMAP1,就将图片加到了图片控件上。

6)为刚才建的对话框添加类

双击新建对话框的任何位置→OK→类名写:CMyDlg

7)创建一个菜单项,用来显示对话框

ResourceView→Menu→IDR_MAINFRAME→双击空白菜单→点POPUP

ID处写:ID_DLG 菜单名写:显示图片对话框→关闭

8)将菜单命令映射到View中去

View→ClassWizard→要加到View中→ID-DLG→COMMAND→EditCode

(在View.h的头部加:#include “MyDlg.h”在public:下加:CMyDlg *dlg;)并

加代码:

CMyView::OnDlg()

{ dlg=new CMyDlg(this);//开辟一片内存单元

dlg->Create(IDD_DIALOG1);//以ID标识符创建

dlg->ShowWindow(SW_RESTORE);//显示对话框

}

9)编译运行

如果我们直接建立一个对话框应用程序,在其上加一个图片控件,再通过Insert→Resource

→Bitmap→Import插进一个位图(.bmp)图形,我们通过图片控件的属性,将这个图形加在这个图片控件上,运行程序,在对话框上就直接能显示图形了。

2、按钮(见书187页)

常见的按钮有三种类型:(1)按键按钮:按键按钮通常可以立即产生某个动作,执行某个命令,因此也常被称为命令按钮,如果将其属性设定为Default button,这时它就有个黑边框,随之称为默认按钮,只要按回车键就能按下这个按钮(2)单选按钮:其外形是在文本前有一个圆圈,当它被选中时,就标上一个黑点,若是自动类型,选中同组按钮的某个单选按钮,则其余的单选按钮的选中状态就会清除,保证多个选项始终只有一个被选中(3)复选框:其外形是在文本前有一个空心方框,当它被选中时,就加上一个“∨”标记,设定三态(不确定)(灰色”∨”)的方法,是在其属性Style页面选中”Tri-state(状态)”项。3、按钮的消息

常见的按钮映射消息有两个:

(1)BN_CLICKED(单击按钮)(2)BN_DOUBLECLICKED(双击按钮)

见下图:

4、按钮选中操作

最常用的按钮操作是设置或获取一个按钮或多个按钮的选中状态。CButton类的以下2个成员函数原型如下:

void SetCheck(int nCheck); //设置指定按钮的选中状态

int GetCheck()const; //获取指定按钮的选中状态

其中:nCheck和GetCheck函数返回的值可以是:0表示不选中,1表示选中,2表示不确定(仅用于三态按钮)

而对于同组多个单选按钮的选中状态的设置或获取,需要使用CWnd类的成员函数:CheckRadioButton和GetCheckedRadioButton,它们的原型如下:

void CheckRadioButton(int nIDFirstButton,int nIDLastButton,int nIDCheckButton);

int GetCheckedRadioButton(int nIDFirstButton,int nIDLastButton);

其中,nIDFirstButton和nIDLastButton分别指定这组单选按钮的第一个和最后一个按钮ID值,nIDCheckButton用于指定要设置选中状态的按钮ID值,函数GetCheckedRadioButton返回被选中的按钮ID值。

5、188页示例:制作问卷调查

选择对话框:选了18-27 单位LAN 聊天游戏

按确定按钮,出现了被选中的说明

(2)完善代码(190页)

1)BOOL CMyDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// ---------------------------

//CHeckRadioButton(IDC_AGE_L18,IDC_AGE_M38,IDC_AGE_18T27);

// CHeckRadioButton(IDC_CM_FTTL,IDC_CM_OTHER,IDC_CM_FTTL);

// 如上2条语句加上,他说CHeckRadioButton没定义,注释掉也出现书结果CButton *pBtn=(CButton*)GetDlgItem(IDC_DO_POP);

pBtn->SetCheck(1);//使收发邮件复选框选中

// return TRUE;// return TRUE unless you set the focus to a control

}

2)void CMyDlg::OnOK()

{

// TODO: Add extra validation here

CString str,strCtrl;

str="你的年龄:";

UINT nID=GetCheckedRadioButton(IDC_AGE_L18,IDC_AGE_M38);

GetDlgItemText(nID,strCtrl);

str=str+strCtrl;

str=str+"\n你使用的接入方式:";

nID=GetCheckedRadioButton(IDC_CM_FTTL,IDC_CM_OTHER);

GetDlgItemText(nID,strCtrl);

str=str+strCtrl;

str=str+"\n你上网主要是:\n";

UINT nCheckIDs[4]={IDC_DO_POP,IDC_DO_READ,IDC_DO_GAME,

IDC_DO_OTHER};

CButton *pBtn;

for(int i=0;i<4;i++)

{

pBtn=(CButton*)GetDlgItem(nCheckIDs[i]);

if(pBtn->GetCheck())

{

pBtn->GetWindowText(strCtrl);

str=str+strCtrl;

str=str+" ";

}

}

MessageBox(str);

CDialog::OnOK();

}

4.3.2编辑框和旋转按钮控件

1、编辑框

编辑框是一个让用户从键盘输入和编辑文本的矩形窗口,用户可以通过它,很方便地输入各种文本、数字或口令,也可使用它来编辑和修改简单的文本内容。当编辑框被激活且具有输入焦点时,就会出现一个闪动的插入符(又可称为文本光标),表明当前插入点的位置。

A、编辑框的属性和通知消息

(a)编辑框的属性和风格

Align text 各行文本对齐方式:Left,Center,Right,默认时为Left

Multiline 选中时为多行编辑框,否则为单行编辑框

Number 选中时控件只能输入数字

Horizontal scroll 水平滚动,仅对多行编辑框有效

Auto HScroll当用户在行尾键入一个字符时,文本自动向右滚动

Vertical scroll 垂直滚动,仅对多行编辑框有效

Auto VScroll 当用户在最后一行按ENTER键时,文本自动向上滚动一页,仅对

多行编辑框有效

Password 选中时,键入编辑框的字符都将显示为”*”,用于口令设置,仅对

单行编辑框有效

No hide selection通常情况下,当编辑框失去键盘焦点时,被选择的文本仍然反

色显示,选中时,则不必具备此功能

OEM convert 选中时,实现对特定字符集的字符转换

Want return 选中时,用户按下ENTER键,编辑框中就会插入一个回车符

Border 选中时,在控件的周围存在边框

Uppercase 选中时,键入在编辑框的字符全部转换成大写形式

Lowercase 选中时,键入在编辑框的字符全部转换成小写形式

Read-Only 选中时,防止用户键入或编辑文本

多行编辑框具有简单文本编辑器的常用功能,例如:它可以有滚动条,用户按Enter 键另起一行以及文本的选定、复制、粘贴等常见操作。而单行编辑框功能较简单,它仅用于单行文本的显示和操作

(b)编辑框的通知消息

当编辑框的文本修改或者被滚动时,会向其父窗口发送一些消息,这些消息是:

EN_CHANGE当编辑框中的文本已被修改,在新的文本显示之后发送此消息

EN_HSCROLL当编辑框的水平滚动条被使用,在更新显示之前发送此消息

EN_KILLFOCUS编辑框失去键盘输入焦点时发送此消息

EN_MAXTEXT文本数目到达了限定值时发送此消息

EN_SETFOCUS编辑框得到键盘输入焦点时发送此消息

EN_UPDATE编辑框中的文本已被修改,新的文本显示之前发送此消息

EN_VSCROLL当编辑框的垂直滚动条被使用,在更新显示之前发送此消息

B、编辑框的基本操作

(a)设置口令

口令设置在编辑框中不同于一般的文本编辑框,用户输入的每个字符都被一个特殊的字符代替显示。这个特殊的字符称为口令字符。默认的口令字符是”*”。应用程序可以用成

员函数CEdit::SetPasswordChar 来定义自己的口令字符,其函数原形如下:void SetPasswordChar(TCHAR ch);

其中,参数ch表示设定的口令字符;当ch=0时,编辑框内将显示实际字符。

如何设置口令(密码):附加例题见后面

(b)选择文本

编程选择文本,调用成员函数CEdit::SetSel来实现,还有:

CEdit::GetSel和CEdit::ReplaceSel,它们分别用来获取编辑框中选择的开始和结束的位置以及替换被选择的文本。

(c)设置编辑框的页面边距

用CEdit::SetMargins函数来实现,其函数原型如下:

void SetMargins(UINT nLeft,UINT nRight);

其中,参数nLeft和nRight分别用来指定左、右边距的象素大小。

(d)剪帖板操作

(e)获取多行编辑框文本

2、旋转按钮控件

“旋转按钮”(也称为上、下控件)是一对箭头按钮,用户单击她们来增大或减小伙伴窗口中某个值,比如一个滚动位置或显示在相应控件中的一个数字,见书194页图4.45

一个旋转按钮控件通常与一个相伴的控件一起使用的,这个控件称为“伙伴窗口”。若相伴的控件的Tab键次序刚好在旋转按钮控件的前面,则这时的旋转按钮控件可以自动定位在它的伙伴窗口的旁边,看起来就象一个单一的控件。通常一个旋转按钮控件与一个编辑框一起使用,以提示用户进行数字输入。默认时,旋转按钮的最小值是100,最大值是0。用户可使用成员函数CSpinButtonCtrl::SetRange来改变最大值和最小值。但在使用时不要忘记在旋转按钮控件属性对话框中选中了“自动伙伴(Auto buddy)”,若选中“Set buddy integer”属性,则伙伴窗口的数值自动改变。

(1)旋转按钮控件常用的风格

A、方位(Orientation)控件放置方向:Vertical(垂直)、Horizontal(水平)

B、对齐(Alignment)控件在伙伴窗口的位置安排:Unattached(不相干)、Right(右边)、Left(左边)

C、自动伙伴(Auto buddy)选中此项,自动选择一个Z-order中的前一个窗口作为控件的伙伴窗口

D、Set buddy integer选中此项,使控件设置伙伴窗口数值,这个值可以是十进制数或十六进制数

E、No thousands选中此项,不在每隔3个十进制数字的地方加上千分隔符

F、换行(Wrap)选中此项,当增大或减小的数值超出范围,则从最小值或最大值开始回饶

G、箭头键(Arrow keys)选中此项,当按下向上和向下方向键时,也能增大或减小

H、Hot track选中此项,当光标移过控件时,突出显示控件的上下按钮

(2)旋转按钮控件的基本操作

MFC的CSpinButtonCtrl类提供了旋转按钮控件的各种操作函数,使用它们用户可以进行基数、范围、位置设置和获取等基本操作。

成员函数:SetBase是用于设置基数的,这个基数值决定了伙伴窗口显示的数字是十进制的还是十六进制的。函数原型如下:

int SetBase(int nBase);//是用于设置基数的。

其中参数nBase表示控件的新的基数。与此函数相对应的成员函数GetBase是获取旋转按钮控件的基数。

int SetPos(int nPos);//设置旋转按钮控件的当前位置

int SetRange(int nLower,int nUpper);//设置旋转按钮控件的当前范围。

参数:nPos表示控件的新位置,它必须在控件的上限和下限指定的范围之内。

nLower和nUpper表示控件的上限和下限,任何一个界限值都不能大于Ox7fff或小于-Ox7fff.

函数GetPos()和GetRange()分别用于获取旋转按钮控件的当前位置和范围成员函数:SetAccel()和GetAccel()分别用于设置和获取旋转按钮控件的加速度。其中函数SetAccel的原型如下:

BOOL SetAccel(int nAccel,UDACCEL *pAccel);

参数:nAccel表示由pAccel指定的UDACCEL结构的数目,pAccel指向一

个UDACCEL结构数组的指针,该数组包含加速信息。

(3)旋转按钮的通知消息:

只有一个UDN_DELTAPOS它是当控件的当前数值将要改变时向其父窗口发送的。

3、书195页示例:用对话框输入学生成绩(使用静态文本、编辑框、旋转按钮,关键是如何将编辑框设置成旋转按钮控件的伙伴窗口)

1)创建并设计对话框

(a)建一个单文挡的应用程序,名字为:伙伴

(b)添加一个新的对话框资源,ID为ID_INPUT,标题为:“学生成绩输入”,将对话框字体改为“宋体,9号”,将“OK”和“Cancel”按钮标题改为“确定”和“取消”。(c)显示对话框网格,调整对话框的大小,然后将“确定”和“取消”按钮移至对话框下方(d)参照书196页图4.48向对话框添加如书196页表4.10所示的控件

注意旋转按钮属性:

Auto buddy:自动选择一个Z-order中的前一个窗口作为控件的伙伴窗口

Set buddy integer使控件设置伙伴窗口数值,这个值可以是十进制数或十六进制数

(e)书

(f)双击对话框模板空白处,为该对话框模板创建一个对话框类CInputDlg

2)完善CInputDlg类代码

(a)在MFC ClassWizard的Member Variables页面中的Class name中选择CInputDlg类后选中所需的控件ID标识符,单击“Add Variables”按钮或双击鼠标,依次为书197页表4.11所示的控件加成员变量

(b)m_spinS1.SetRange(0,100);//设置旋转按钮控件范围

m_spinS2.SetRange(0,100);

m_spinS3.SetRange(0,100);

(c)//NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;

//上个语句用于反映旋转控件的当前位置(由成员iPos指定)和增量大小(由成员iDelta指定)UpdateData(TRUE);//将控件的内容保存到变量中

m_fScore1+=(float)pNMUpDown->iDelta*0.5f;

if(m_fScore1<0.0)

m_fScore1=0.0f;

if(m_fScore1>100.0)

m_fScore1=100.0f;

UpdateData(FALSE);//将变量的内容显示在控件中

3)调用对话框

(a)打开“伙伴”单文档应用程序的菜单资源,添加顶层菜单项“测试(&T)”,在其下添加一个菜单项“学生成绩输入(&I)”,ID为ID_TEST_INPUT

(b)CInputDlg dlg;

if(IDOK==dlg.DoModal())//是否单击对话框的“确定”按钮

{ //获取对话框数据

CString str;

str.Format("%s,%s,%4.1f,%4.1f,%4.1f",dlg.m_strName,dlg.m_strNO,dlg.m_fScore1, dlg.m_fScore2,dlg.m_fScore3);

//Format是CString类的一个经常使用的成员函数,它通过格式操作使任意类型的数据

//转换成一个字符串。该函数的第一个参数是带格式的字符串,其中的"%s"就是一个格

//式符,每一个格式符依次对应于该函数的后面参数表中的参数项。例如格式字符串中

//第1个%s对应于dlg.m_strName,CString类的Format和C语言库函数printf十分相似。

AfxMessageBox(str);

}

(c)在主框架文件MainFrm.h”的前面添加:#include “InputDlg.h”

(d)编译并运行,测试发现,单击成绩1的旋转按钮控件将以0.5增量改变,这是因为成绩1的旋转按钮属性设置了Auto buddy。而单击成绩2和成绩3的旋转按钮控件以1为增量改变窗口的数值,这是因为它们的属性设置了Auto buddy和Set buddy integer 这个值可以是十进制或十六进制,而不能是小数(浮点数)。

4.3.3列表框

列表框是一个列有许多项目让用户选择的控件。它与单选按钮组或复选框组一样,都可让用户在其中选择一个或多个项。但不同的是,列表框中项的数目是可灵活变化的,程序运行时可往列表框中添加或删除某些项。并且,当列表框中项的数目较多而不能一次全部显示时,还可以自动提供滚动条来让用户浏览其余的列表项。

1、列表框的风格和消息

按性质来分,列表框有单选、多选、扩展多选以及非选4种类型(见书198页图4.50)默认风格下的单选列表框让用户一次只能选择一个项,多列表框可让用户一次选择几个项,而扩展多项列表框允许用户用鼠标拖动或其它特殊组合键进行选择,非选列表框不提供选择功能。还有其它一系列风格,用于定义列表框的外观及操作方式,这些风格可在下图1所示的列表框属性对话框中设置(书199页):

图1:列表框的属性对话框

1)列表框的Styl(风格)属性:

Selection指定列表框的类型:单选(Single)、多选(Multiple)、扩展多选(Extended)、不选(None) (所有者)Owner draw自画列表框,默认为No

Has strings选中时,在自画列表框的项目中含有字符串文本

Border选中时,使列表框含有边框

Sort选中时,列表框的项目按字母顺序排列

Notify选中时,当用户对列表框操作就会向父窗口发送通知消息

Multi-column选中时,指定一个具有水平滚动的多列列表框

Horizontal scroll选中时,在列表框中创建一个水平滚动条

Vertical scroll选中时,在列表框中创建一个垂直滚动条

No redraw选中时,列表框发生变化后不会自动重画

Use tabstops选中时,允许使用停止位来调整列表项的水平位置

Want key input选中此项,当用户按键且列表框有输入焦点时,就会向列表框的父窗口发送相应消息

Disable no scroll选中时,即使列表框的列表项能全部显示,垂直滚动条也会显示,但此时是禁用的(灰显)

No integral height选中时,在创建列表框的过程中,系统会把用户指定的尺寸完全作为列表框的尺寸,而不论是否有项目在列表框,也不能完全显示出来

2)列表框的通知消息

当列表框中发生了某个动作,如用户双击选择了列表框中某一项时,列表框就会向其父窗口发送一条通知消息。常用的通知消息如下:

LBN_DBLCLK 用户双击列表框的某项字符串时发送此消息

LBN_KILLFOCUS 列表框失去键盘输入焦点时发送此消息

LBN_SELCANCEL 当前选择项被取消时发送词消息

LBN_SELCHANGE 列表框中的当前选项将要改变时发送此消息

LBN_SETFOCUS 列表框获得键盘输入焦点时发送此消息

2、列表框的基本操作

当列表框创建之后,往往要添加、删除、改变或获取列表框中的列表项,这些操作都可以调用MFC的CListBox类成员函数加以实现。列表框的项除了用字符串来标识外,还常常通过索引来确定。索引:表明项目在列表框中排列的位置,它是以0为基数的,即列表框中第一项的索引是0,第二项的索引是1,依次类推。

(a)添加列表项

列表框创建时是一个空的列表,需要用户添加或插入一些列表项。CListBox类成员函数AddString和InsertString分别用于添加列表项,其函数原型为:

int AddString(LPCTSTR lpszItem);

int InsertString(int nIndex,LPCTSTR lpszItem);

其中:列表项的字符串文本由参数pszItem来指定,成功返回列表在列表框的索引,错误返回LB_ERR,空间不够返回LB_ERRSPACE。但InsertString函数不会将列表项进行排序,不管列表框控件是否具有sort属性,只是将列表项插在指定索引的列表项之前,若nIndex等于-1,则列表项添加在列表框末尾。而:AddString函数在当列表框控件具有sort 属性时会自动将添加的列表项进行排序。函数原型中,LPCTSTR类型用于表示一个常值字符指针,这里可以将其理解成是一个常值字符串类型。

以上2个函数只能将字符串增加到列表框中,但有时用户还会需要根据列表项使用其他数据。这时,ListBox的SetItemData和SetItemDataPtr能有效解决这个问题,它们能使用户数据和某个列表项关联起来:

int SetItemData(int nIndex,DWORD dwItemData);

int SetItemDataPtr(int nIndex,void *pData);

其中,SetItemData是将一个32位数与某列表项(由nIndex指定)关联起来,而SetItemDataPtr可以将用户的数组、结构体等大量的数据与列表项关联

若产生错误,它们都返回LB_ERR

而:GetItemData和GetItemDataPar分别用来获取相关联的用户数据。

第六章 对话框控件

学习目标: ?掌握CommonDialog。 ?掌握文件操作相关的对话框。 ?理解打印对话框。 6.1对话框: 对话框是一种用户界面接口,用于同用户进行交互,完成一些特定的任务,简单的对话框有对用户操作进行提示的对话框,对重要操作要求用户进行决定的交互对话框等。 这类任务能被独立出来,作为通用的交互处理过程。这些能被独立出来作为通用交互过程的任务常见如下一些: (1)文件选取。 (2)保存设置。 (3)路径选取。 (4)字体选取。 (5)颜色选取。 (6)打印设置。 (7)打印预览框。 在.NET中这些组件是在https://www.wendangku.net/doc/8510813955.html,monDialog的基础上发展而来。

6.1.1Common pialog: CommonDialog是.NET中对话框组件的基础,它是System.Windows.Forms命名空间下的一个抽象类,在程序中不能直接使用。 CommonDialog公开了2个方法和一个属性,即:ShowDialog()/ShowDialog(IWin32Window)方法和Reset()方法以及Tag属性。 ShowDialog是用于显示对话框。ShowDialog()有一个重载形式:ShowDialog(IWin32Window),IWin32Window在这里指一个窗口句柄,在调用中,这个参数应该被赋值成要显示的对话框的父窗体。 注意:句柄是Window中的一个常用词语,可以把它理解为一个标识符号,只是这个标识符号是一个数字。相应的窗口句柄就是窗口的标标识符。 Reset方法: 使用过程中可能改变初始值,当需要让所有的初值回到原来的状态时,调用Reset能达到目的。 Tag属性: Tag没有具体含义,它可以让用户在对话框控件中存储、维护自己的数据。这个数据由用户自己的代码解释。 对话框的返回值(ShowDialog的返回值): 对话框通过调用ShowDialog()调用后,返回一个类型为DialogResult 值,其中DialogResult.OK指出用户成功完成了操作,成功选取了文

在CFileDialog对话框中添加控件

在CFileDialog对话框中添加控件 关键字:CFileDialog扩展类,OFNHookProc 需求描述:昨天遇到一个用户需求,在CFileDialog对话框(SAVE)中加入一个Check , 一个Edit,一个Spin控件,dlg.Domodal()==IDOK返回时要同时获得Edit控件中的数据. 实现方法:如果只需要控制控件,用方法一即可,但如果需要获取数据,则只能用方法二。我最终用的就是方法二. 方法一: 首先查找MSDN关于CFileDialog扩展的实现描述,上网查到实现预览图片式的CFILEDIALOG的例子。按照其思路从CFileDialog派生了一个新的类CFileDialogEX. 在类中添加以下代码 #define WM_CHECKZOOMIN WM_USER+1856 public: BOOL bZoomIn; UINT nMul; //[1~100] //前置声明--------------- BOOL NEAR CALLBACK HandleNotify(HWND hDlg, LPOFNOTIFY pofn); UINT_PTR CALLBACK OFNHookProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); // CFileDialogEx IMPLEMENT_DYNAMIC(CFileDialogEx, CFileDialog) CFileDialogEx::CFileDialogEx(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) : CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd) { //这个四个常用标识位 m_ofn.Flags |= OFN_ENABLETEMPLATE |OFN_HIDEREADONLY |OFN_EXPLORER; //OFN_EXPLORER | OFN_ENABLEHOOK

MFC对话框程序中的各组件常用方法

MFC对话框程序中的各组件常用方法: Static Text: 将ID号改成唯一的一个,如:IDC_XX,然后进一次类向导点确定产生这个ID,之后更改Caption属性: GetDlgItem(IDC_XX)->SetWindowText(L"dsgdhfgdffd"); 设置字体: CFont *pFont = new CFont; pFont->CreatePointFont(120,_T("华文行楷")); GetDlgItem(IDC_XX)->SetFont(pFont); Edit Control: 设置文本: SetDlgItemText(IDC_XX,L"iuewurebfdjf"); 获取所有输入: 建立类向导创建一个成员变量(假设是shuru1,shuru2……)类型选value,变量类型任选。 UpdateData(true); GetDlgItem(IDC_XX)->SetWindowText(shuru1); 第一句更新所有建立了变量的对话框组件,获取输入的值。第二句将前面的IDC_XX的静态文本内容改为shuru1输入的内容。 若类型选用control: 1.设置只读属性: shuru1.SetReadOnly(true); 2.判断edit中光标状态并得到选中内容(richedit同样适用) int nStart, nEnd; CString strTemp; shuru1.GetSel(nStart, nEnd); if(nStart == nEnd) { strTemp.Format(_T(" 光标在%d" ), nStart); AfxMessageBox(strTemp); } else { //得到edit选中的内容 shuru1.GetWindowText(strTemp); strTemp = strTemp.Mid(nStart,nEnd-nStart); AfxMessageBox(strTemp); } 其中nStart和nEnd分别表示光标的起始和终止位置,从0开始。strTemp.Format 方法用于格式化字符串。AfxMessageBox(strTemp)显示一个提示对话框,其内容是字符串strTemp。 strTemp = strTemp.Mid(nStart,nEnd-nStart)返回一个被截取的字符串,从nStart开始,长度为nEnd-nStart。如果nStart == nEnd说明没有选择文本。 注:SetSel(0,-1)表示全选;SetSel(-1,i)表示删除所选。

【精品报告】常用中后台交互设计控件使用场景与规范总结

常用中后台交互设计控件使用场景与规范总结 最近刚完成平台安畅云 2.0 的改版设计,平台模块很多,经常存在很多类似的页面和组件,若不制定统一的规范和控件,则会导致很多重复的工作,大大降低产品的设计效率; 同时,平台的一致性也得不到保障。 所以,我们视觉、交互、前端的小伙伴们针对我们踩过的坑,大家认真总结和提炼出一个 符合公司定位的设计规范,统一公司项目的前端 UI 设计,规避不必要的设计差异和实现 成本,实现设计和前端资源的效率最大化。 此设计规范主要分享了中后台常用设计组件的定义、组成、使用场景及注意事项。 字体 概述 字体是界面设计中最基本的构成元素之一,用户通过文字来理解内容和完成任务,合适的 字体将大大提升用户的阅读体验及工作效率。在安畅云项目的字体使用中,为了使页面的 视觉层次更加清晰,我们从以下三方面来使平台的字体符合易阅读和美观的要求。 合理的使用不同的字重、字号和颜色来强调界面中需要突出的信息; 尽量使用单种字体,使用多种字体会让界面看起来零散和杂乱无章; 遵循 WCAG 2.0 标准(标准详情见 https://https://www.wendangku.net/doc/8510813955.html,/Translations/WCAG20- zh/#visual-audio-contrast),字体在使用时与背景颜色的对比值满足无障碍阅读的最 低标准。 字体使用建议 中文字体优先级:PingFang SC、Hiragino Sans GB 、Microsoft YaHei(平台使用字体)英文字体优先级:Helvetica Neue、Helvetica、Arial(平台使用字体)

字号使用建议 行高使用建议 行高也是影响用户阅读体验的重要因素之一,我们查阅资料得知西文的基本行高通常是字号的 1.2em 左右,而中文因为字符复杂,所以中文行高需要更大。现在公认1.5em 至1.8em 之间会有一个比较好的视觉阅读效果。 安畅云项目行高计算公式:行高值=字号 x 1.5,例如:12 号字体的行高为 18px,14 号字体的行高为 21px。

4 对话框及常用控件 (第四章 对话框和常用控件)

1.什么是对话框?它分为哪两类?这两类对话框有哪些不同? 答:对话框是一种特殊的窗口,主要功能是输出信息和接收用户的输入。对话框分为有模式对话框和无模式对话框。当一个有模式对话框打开时,用户只能与该对话框进行交互,而其他用户界面对象收不到输入信息。而无模式对话框打开时,用户可以同时打开其他窗口对象,操作完毕后,又可用鼠标或其他方式激活该窗口。 2.什么是对话框模板、对话框资源和对话框类? 答:对话框模板是一个描述对话框的内存结构,用于添加控件及其布局。对话框资源指快捷键、对话框、菜单、字符串、工具栏按钮、图表、版本信息等。对话框类用于实现对话框功能。 3.对一个对话框编程一般经过几个步骤? 答:1. 在资源编辑器中画对话框,添加控件,设定控件位置、大小、ID和其它属性; 2. 定义对话框回调函数,添加控件的事件处理函数; 3. 注册对话框函数 4、什么是控件?根据控件的性质可以将控件分为几类? 答:在Windows中所用的按钮控件是用来实现一种开与关的输入。 常见按钮类型:按键按钮、单选按钮、复选框按钮。 5.向对话框添加一个常用控件的方法有哪些?这些方法是否使用于ActiveX控件? 答:1、先点击控件,然后在对话框上单击, 2、先点击控件,然后在对话框上点住不放,画出像要的大小。 否。 6.什么是DDV/DDX技术?如何使用这种技术? 答:DDX(对话框数据交换)机制用来初始化对话框中的数据,并向应用程序返回数据,它使得用户向对话框加载对象数据和当对话框关闭时恢复其中的数据这两个过程自动化。 DDV(对话框数据验证有效性)机制用于将数据返回成员变量之前将数据的长度和范围有效化。 7.什么是空间的通知消息?它在编程中起哪些作用? 答:控件消息由按钮(BN_)、编辑框(EN_)、组合框(CBN_)和列表框(LBN_)等产生。控件通过向父窗口发送控件通知消息来表明发生了某种事件。

从零开始学VC系列教程 二.对话框及常用控件实验

从零开始学VC系列教程二. 对话框及常用控件实验 恭喜你,进入VC学习的第二节了.这一节是人机交互的基础.所谓人机交互,说通俗点就是与机器对话.然而我们现在的技术还不能像科幻片里一样与机器人直接说话就行了.所以,我们的操作意图还得通过文本输入,命令按钮等等来实现. 本节内容:学会对话框调用及一些常用控件的使用方法. 学习目的:学习人机交互,为软件开发提供界面基础. 1.新建工程.参考第一节的方法新建一个工程,名字为Eg02完成后如下图 细心的朋友一定会发现.新建的工程里还有一个对话框,ID名是IDD_ABOUTBOX这个是做什么用的呢?我们用到的软件都会有一个版权声明.通过第一章的学习,大家应该知道怎么观看这个IDD_ABOUTBOX对话框了吧.没错!双击IDD_ABOUTBOX就可以了.我们会看到如下的一个对话框 这就是我们这个程序的关于对话框,一般用于版权声明及版本号标识.大家看到的这个对话框里有两个静态文本框和一个图像框(Picture),静态文本框我们在前一节已经介绍过了.大家可以修改一下版权所有这一行,填什么都可以,签个大名也行.完成以后你一定想看看效果,这个对话框怎么打开呢?其实VC已经为我们做好了.先按F7编译,然后按F5运行.大家可以看到

程序运行了. 单击应用程序图标,就会出现一个菜单,选最后一个[关于Eg02],关于对话框就弹出来了. 当然,这是系统为我们做好的.自己怎么在程序中调用这个对话框呢?为了演示,首先参考第一节的内容添加一个按钮,然后把按钮的ID改为IDC_BTN_ABOUTME,把标题,也就是Caption 改为[关于].最终效果如下 下面我们为按钮添加代码.相信大家一定还记得怎么进入代码吧..对了,双击[关于]按钮,在弹出的对话框中点[确定]就可以了.为了让大家更好的理解下面的操作,我们先要解释一下关于对话框的类.VC向导会为关于对话框建立一个类,大家看看下面的图

面向对象技术-对话框和按钮控件

计算机学院 实验报告 实验名称对话框和按钮控件课程名称面向对象技术 姓名班级学号 日期地点 成绩教师

1.实验目的 运用对话框和按钮控件设计一个可供选择的调查问卷对话框。 2.实验内容 设计一个对话框,用于问卷调查,它针对“上网”话题提出了是个问题,每个问题都有四个选项。当回答问题后,按“确定”按钮,弹出一个消息对话框。显示用户选择的内容。 3.实验环境(软件、硬件及条件) VC++6.0 PC WIN7 4.实验方法 1)创建一个默认的基于对话框的应用Ex_Research。 2)Visual C++会自动打开对话框编辑器并显示对话框资源模版。单击对话框编辑器工具栏上的切换网络按钮,显示对话框网格,将对话框标题改为“上网问卷调查”。 3)在对话框中添加实验需要的组框控件、静态文本、静态图文控件、复选按钮和单选按钮等,并按照实验要求修改对应的名称。 4)单击工具栏的测试对话框按钮,测试一下所添加的对话框效果。5)将项目工作区切换到ClassView(类视图)页面,展开CEx_researchDig类的所有成员,双击OnInitDialog函数名就会在文档窗口中自动定位到该函数的实现代码处,在此函数添加初始化代码。 6)用MFC.ClassWizard在CEx_ResearchDlg类中添加IDOK按钮的BN_CLICKED消息映射,添加代码,使得用按“确定”按钮获取用户所作的选择内容。 7)编译并运行,出现“上网问卷调查”对话框,当回答问题后,按“确定”按钮,出现消息对话框,显示用户选择的内容。 5.实验分析 此次实验中,在4)步骤测试对话框,刚开始选择单选按钮是,两组单选按钮中只有一个单选按钮被选中,这是顺序添加的8个单选按钮全部变成一组。解决这个问题的办法是将第一组的第一个单选按钮的Group(组)属性选中。

对话框和按钮控件实验报告

实验(实习)报告 实验(实习)名称对话框和按钮控件日期 5.15 得分指导教师 院计算机与软件学院专业计算机科学与技术年级班次姓名学号 实验内容: 设计一个对话框,用于问卷调查,在教材【例Ex_reserch】基础上针对“上网”话题在提出一个问题:“你每天上网的平均时间”,该问题的备选答案是“<1小时”、“<2小时”、“<3小时”和“>3小时”,如图T9.1所示。当回答问题后,单击“确定”按钮,弹出一个消息对话框,显示用户选择的内容。 实验步骤: 1.创建工作文件夹 2.设计“上网问卷调查”对话框 (1)创建一个默认的基于对话框的应用Ex_Research。 (2)调整对话框的大小(宽度不变),将“确定”和“取消”按钮移至对话框的下方,参照图控件的布局,添加一个静态文本框,标题为“你每天上网的平均时间:”,保留默认的标识符。 (3)添加四个单选按钮控件,在其属性对话框中,分别将其标题设置为“<1小时”、“<2小时”、“<3小时”和“>3小时”,标识符分别设置为IDC_TIME_L1、IDC_TIMEL2、IDC_TIME_L3和IDT_TIME_M3。 (4)选中第1 个单选按钮IDC_TIME_L1的Group属性选项。 (5)添加一个静态图片控件,在其属性对话框中将其类型属性为“Frame(框架)”,颜色属性选为“Etched(蚀刻)”。 3.修改代码 (1)在CEx_ResearchDlg::OnInitDialog函数中添加下列代码: CheckRadioButton(IDC_TIME_L1、IDC_TIME_M3、IDC_TIME_L1); (2)在CEx_ReaserchDlg::OnOk函数中添加下列代码: //获得第四个问题的用户选择 Str=str+”\n你每天平均上网的时间:\n”; nID=GetCheckedRadioButton(IDC_TIME_L1、IDC_TIME_M3); GetDlgItemText(nID,strCtrl);//获得指定控件的标题文本 Str=str+strCtrl; 4.编译运行并测试 编译并运行后,显示“上网调查问卷”对话框,当回答问题后,单击“确定”按钮,出现相应的西欧系对话框,显示用户选择的内容。

对话框常用控件实验报告

对话框常用控件实验报告 班级:电气工程与自动化2班 学号:06120902 姓名: 嘎日玛盖

Ⅰ内容和要求: 一,对话框常用控件实验要求: 1 控件的消息映像 2控件与关联变量的数据处理 二,对话框常用控件实验步骤: 1步骤 2效果 3执行效果截图 4问题的解决方法 三,对话框常用控件实验的内容: 1编辑框 2静态文本 3单选框 4复选框 Ⅱ实验步骤 1.新建一个工程,选择MFC AppWizard(exe)的项目类型,输入项目名:heiha,结果如图1: 选择单文檔类型。 2.新建一个菜单“正式开始工作”,在其下面建立新选项“提交档案”,设其ID为ID_MENU_TIJIAO,如图2:

钮、复选按钮和普通按钮: m_NAME、m_XINGBIE和m_AIHAO。

5.利用MFC ClassWIzard在Cfirst类中添加IDOK按钮的BN_CLICKED消息映像,并添加下列代码。 UpdateData(true); m_NAME=m_NEIRONG; UINT AID=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2); GetDlgItemText(AID,m_XINGBIE); CString str,strCtrl; UINT nCheckIDs[7]={IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4,IDC_CHEC K5,IDC_CHECK6,IDC_CHECK7}; CButton *p; for(int i=0;i<7;i++) { p=(CButton*)GetDlgItem(nCheckIDs[i]); if(p->GetCheck()){ GetDlgItemText(nCheckIDs[i],strCtrl); str=str+strCtrl; str=str+" ";} } m_AIHAO=str; UpdateData(false); 6. 利用MFC ClassWIzard在CMainFrame类中添加对应新建菜单按钮“提交档案”选项ID 的COMMEND消息映像,并添加下列代码。 Cfirst da; da.DoModal(); Ⅲ实验结果 最终执行效果图为如下:

MFC 对话框和常用教程

第五章对话框和常用控件 对话框是Windows应用程序中最重要的用户界面元素之一,是与用户交互的重要手段,在程序运行过程中,对话框可用于扑捉用户的输入信息或数据。对话框是一个特殊类型的窗口,任何对窗口进行的操作(如:移动、最大化、最小化等)都可在对话框中实施,一般来说,在对话框中通过各种控件(如:按钮、编辑框、列表框、组合框等)来和用户进行交互。控件是在系统内部定义的用于和用户交互的基本单元。 一、对话框的使用 Visual C++提供的对话框编辑器能“可视”地进行设计、编辑,并可用 ClassWizard为对话框从CDialog基类中派生一个类,MFC的CDialog类封装了用于对话框的显示、关闭等操作的许多功能函数,例如:DoModal函数用来显示模式对话框并返回用户操作的结果。 1、模式对话框(为186附加举例页) 所谓模式对话框是指,当对话被弹出时,用户必须在对话框中进行相应的操作,在退出对话框之前,对话框所在的应用程序不能继续执行。平常我们所见到的对话框大多是模式对话框。 例:模式对话框(通过菜单命令弹出) 1)建一个单文档(SDI)应用程序 2)创建对话框模板 Insert→Resource→选中Dialog→单击New 拖过一个静态文本,鼠标对准它,按右键点properties改标题为“新建模式对话框”。 3)鼠标右键对准对话框的任何位置单击,选择properties选项,设置ID为IDD_MYDIALOG 4)给对话框创建类 双击新建对话框的任何位置,单击OK,写类名为“CMyDlg”,保 证”CDialog”作为该类的基类。 5)创建菜单命令: a)打开资源编辑器的菜单项Menu b)双击IDR_MAINFRAME c)双击右边空白菜单,点开pop_up(让它是空白),在名字处写”弹出对话框(&A)”,ID 处写ID_PUPDIALOG 6)将菜单命令连接到主框架程序中,完成ID_PUPDIALOG的消息映射:View→ClassWizard→保证Class name里是CMainFrame,在ObjectIDs 里找到ID_PUPDIALOG点黑→Messages里(右边)点COMMAND建立主框架对象方法并加代码: void CMainFrame::OnPupdialog() { CMyDlg MyDlg; MyDlg.DoModal(); //DoModal()是CDialog类成员函数,通过调用该 //函数将显示对话框。 } 7)在CMainFrame.cpp文件里加: #include “MyDlg.h”// 之后运行。 2、无模式对话框(为186附加页) 非模式对话框,弹出后,可一直保留在屏幕上,用户可继续在应用中进行其它操作或启动其它应用程序,当需要使用对话框时,只需象激活一般窗口一样激活对话框即可。

常用控件中英文对照

Accordion:可折叠标签Alert Box:警告弹窗 Arrow / Line:箭头标记Breadcrumbs:面包屑导航Browser Window:浏览器窗口Button:按钮 Button Bar / Tab Bar:选项条Calendar:日历 Callout:插图编号 Bar Chart:条形图 Column Chart:柱状图 Line Chart:折线图 Pie Chart:饼图Checkbox:复选框

Checkbox Group:复选框组 Color Picker:颜色选择器 combobox / PullDown Menu / DropDown List / Select List:下拉列表 Comment / Sticky Note / To Do:电子便签 Cover Flow:苹果首创的将多首歌曲的封面以3D界面形式显示出来的方式 Data Grid / Table:数据表 Data Chooser / Data Picker:日期选择器 Field Set / Group / Container:该控件可将表单内的相关元素分组Formatting Toolbar / Rich Text Editor Toolbar:格式化工具条,富文本编辑器 Geometric Shape:几何形状 Help Button:帮助按钮 Horizontal Curly Brace:水平花括号

Horizontal Rule / Separator / Line / HR:水平分隔线Horizontal Scroll Bar:水平滚动条 Horizontal Slider:水平滑块 Horizontal splitter / Separator / Drag Bar:水平分隔器Icon:图标 Icon and Text Label:图标和文本标签 Image:图像 iOS Keyboard:iOS键盘 iOS Menu:iOS菜单 iOS Picker:iOS选择器 iPad:iPad iPhone:iPhone Label / String of Text:文本字符串 Link:链接

VC++6.0入门【第六章 创建和使用对话框】

第6章创建和使用对话框 对话框是一种用户界面,几乎每一个Windows程序都使用对话框与用户进行交互。对话框可能是一个简单的只含有OK按钮的消息框,也可以是一个复杂的数据输入表单。对话框上有一些方便用户输入的控件,对话框依靠这些控件与用户进行交互,其实质是一个接收消息的窗口。 在本章节我们主要讲述模式对话框和无模式对话框的原理和使用方法,下一章将详细介绍各种控件的使用。你将学习创建一个对话框,使用对话框模板编辑一个对话框资源,并在程序中调用对话框的方法。 6.1 对话框的基本原理 6.1.1 对话框的工作原理 在创建一个对话框之前,我们先来了解一下对话框是如何工作的,对话框的数据来自三方面:对话框资源、对话框对象、和一个文档对象: 1.对话框资源 对话框资源是一个用户输入或取得数据的图形界面。这个图形界面是使用Develop Studio的对话框编辑器在对话框模板上创建的,程序员可以在对话框模板上增加并编辑控件,生成对话框资源。当应用程序运行时,就可以得到一个对话框。 2.对话框对象 MFC使用CDialog类来描述对话框,它是CWnd类的派生类。在CWnd类的基础上增加了数据交换的功能。当创建一个新的对话框资源后,使用ClassWizard可以创建一个对话框类的派生类。对话框对象实现了对话框和应用程序之间的通信。在应用程序中定义一个对话框对象后,在对话框显示前,可以通过访问对话框对象的成员变量为一个对话框的控件初始化,在对话框关闭后,可以通过访问对话框对象的成员变量获得用户的输入数据。 3.文档对象 MFC使用文档对象描述应用程序处理的数据,用户输入的数据要进一步的处理,通常要先存贮到文档对象中。例如:一个学生记录处理的应用程序,用户通过一个对话框输入学生记录并贮存到一个文件中。应用程序的处理顺序是:用户在对话框中输入信息,通过对话框对象得到输入信息,将输入信息整理到文档对象中,使用序列化函数将文档对象存贮到一个文件中,所以文档对象扮演了一个很重要的数据交换的角色。 MFC使用以上三者实现用户与应用程序之间数据交换,数据交换流程见图6-1所示,遵循四个步骤。

VB常用控件介绍

VB常用控件介绍 (一)标签的常用属性 1、Name:名称。默认为Label1。 2、Caption:标签显示的文字。 3、Font:设置显示文字的性质。 4、Backcolor:背景色 5、Visible:设置标签是否可见 (二)命令按钮的常用属性 1、Name:默认值为Command1 2、Caption:按钮上显示文字。 3、Visible:设置按钮是否可见。 (三)窗体的常用属性 1、Name:定义对象的名称,默认为Form1,可以在属性窗口更改,运行时不可改。(注:与Caption区别) 2、BackColor:设置窗体的背景色 属性窗口:①调色盘选择颜色②输入16进制值 3、Caption:窗体标题栏中显示的文字。 4、Font:设置窗体字体类型。 5、Height(高)、Width(宽):设置窗体大小。 6、StartUpPosition:设置窗口位置。 (四)文本框常用属性 1、Name:默认为Text1,可修改为以Txt为前缀的名称。 2、Text:显示在文本框中的文字。 3、MaxLength:设置输入字符串的长度限制。 4、PassWordChar:设置输入密码时用户输入的字符。 (五)驱动器列表框常用属性 1、Name:名称。默认为Drive1。 2、Drive: 驱动器列表框中的驱动器名。 (六)目录列表框常用属性 1、Name:名称。默认为Dir1。 2、Path: 返回或设置当前路径。

(七)目录列表框常用属性 1、Name:名称。默认为File1。 2、Path: 返回或设置当前路径。 (八)操作对话框控件常用属性(进行诸如打开和保存文件,设置打印选项,以及选择颜色和字体等操作) 1、Name:名称。默认为CommonDialog1。 2、ShowOpen:显示“打开”对话框。 3、ShowSave显示“另存为”对话框。 4、ShowColor显示“颜色”对话框。 5、ShowFont显示“字体”对话框。 6、ShowPrinter显示“打印”或“打印选项”对话框。 7、ShowHelp 调用 Windows 帮助引擎。 (九)菜单的制作: 1、菜单编辑器的使用: “工具”/“菜单编辑器” 2、菜单的创建: (1)“标题”:输入菜单项文本(相当于Caption) (2)“名称”:输入菜单项名称,编程用。(相当于Name) (3)降低可上升一个层次 改变菜单项顺序 复选:可多选,左边加上√有效:是否可用(Enabled) 可见:是否可见(Visible) (4)单击“下一个”或“插入”,建立下一个菜单 (5)确定 3、菜单分组: 分隔线作为一个菜单项,“标题”中输入“-”(连字符,并角),“名称”任意。 4、访问键设置: 使用:Alt+字母 设置:“标题”中,字母前加“&” 5、快捷键设置: 在列表中选择相应的快捷键。 (1)第一级菜单无快捷键 (2)同一菜单的子菜单中不能有相同的访问键和快捷键

相关文档
相关文档 最新文档