MFC学习(一)——对话框和Windows标准控件

来源:互联网 发布:重度抑郁症的表现知乎 编辑:程序博客网 时间:2024/06/05 23:04

对话框是Windows应用程序和用户打交道的界面元素,包含各种按钮和各种选项,通过它们可以完成特定命令或任务。学习MFC从对话框的使用开始学习,会让整个学习更加精彩。

预备知识

1.1对话框的组成

1)对话框资源:可以使用对话框编辑器来配置对话框的界面。

2)对话框类:在MFC程序中可以使用向导帮助用户建立一个与对话框资源相关联的类,通常这个类有CDialog派生。

1.2 对话框的分类

1)模态(Model)对话框:在对话框关闭之前,用户无法在同一应用程序的其他地方进行工作,如WORD的【打开文件】对话框;不过模态对话框更易于编程,所以先学习这个。

2)非模态(Modeless)对话框:在对话框仍然保留在屏幕的同时,用户还可以在同一应用程序的其他窗口中工作,如WORD的【查找与替换】对话框。

1.3对话框控件的分类

1Windows公用控件:包括编辑控件、按钮、列表框、组合框、滑动条控件等,另外也包括所有者描述的控件。这些应用比较简单,所以先学这个。MFC为了更好的支持Windows公用控件,提供了多种控件类,每一个类封装一种控件,并提供相应的成员函数来管理操作控件。

2ActiveX控件:既可以在对话框中使用,也可以在HTML网页中使用。

3)由MFC提供的其他控件类。

1.4创建对话框

1)创建对话框资源

可以使用如图1-1所示的对话框编辑器来创建包含不同控件的对话框资源(如图1-2所示)。对话框编辑器会对项目的资源(RC)文件进行更新,使之包含新的对话框资源,并且该项目的Resource.h文件也会被更新以便包含新的#define常量。在对话框编辑器中,可以调整对话框显示的大小和位置,从【工具箱】窗口(如图1-3所示)拖放各种类型的控件到对话框中,用对话框编辑器可以调整控件的位置,测试对话框的外观和行为。(也可以用文本方式来编辑项目的资源文件,这需要掌握资源脚本的编写方法。)

1-1 对话框编辑器


1-2 对话框资源


1-3 “工具箱”窗口


每个放置在对话框资源上的控件都有默认的Tab Order,若想改变默认顺序,可以使用菜单【格式】|Tab键顺序】或者按快捷键Ctrl+D。当所有控件的Tab顺序显示出来后,就可以使用鼠标单击控件来改变Tab Order

2)创建对话框类

在创建了对话框资源后,就可以利用“MFC类向导”来创建从CDialog类派生且连接到对话框资源的对话框类。具体操作详见后面第2节中步骤(2)。

创建完对话框类之后,还要根据具体需要为对话框所含的控件(如编辑框)引入合适类型的变量,实现数据交换和校验。之后还要为对话框类添加数据成员变量,为对话框中的各控件添加消息响应函数,为各种事件处理函数编辑代码,以能够完成指定的工作。

 

 

3)对话框的调用

假设被调用对话框资源的IDIDD_MY_DIALOG,创建的对话框类名为CMyDialog,则对话框的调用方式(这里只给出模态对话框的调用方式)如下,

CMyDialog dlg;//声明CMyDialog类的对象

Dlg.DoModal();//激活模态对话框

 

 

操作步骤与实例

本程序的功能是在客户区显示一个可以由用户指定填充颜色的矩形,当菜单【颜色设置】被选中后将调出【颜色】对话框,用户可以确定RGB三原色的值,单击【确定】按钮后即可改变矩形的填充色。

步骤:

1)启动Visual Studio2010,单击【文件】菜单,选择【新建】->【项目】,弹出对话框(这个对话框就是模态对话框的类型)如图2-1所示。


图2-1

输入名称Li4_1,选择项目存储路径,单击【确定】,弹出如图2-2所示的对话框,


2-2

如图2-3所示,选择项目的“资源视图”,找到Dialog资源,右击后选中【插入Dialog】命令,打开对话框编辑器。


2-3

在新的对话框资源上添加3个从【工具箱】窗口选取的静态控件,分别修改其Caption属性为R(0-255)G(0-255)B(0-255),再添加3个从【工具箱】窗口选取的编辑框控件,修改其ID属性为IDC_RIDC_GIDC_B。可以使用对话框编辑器对各个控件进行布局,设置3个编辑框控件,3个静态控件为同样大小并左对齐,最终完成的对话框界面如图2-4所示。


2-4

2)选择对话框资源,右击后选择【添加类】命令,打开【MFC类向导】对话框,如图2-5所示。输入类名CMyColorDialog,单击【完成】,就创建了一个连接到对话框资源的对话框类CMyColorDialog


2-5

3)选择对话框资源,编辑框控件IDC_R,右击后选择【添加变量】命令,打开【添加成员变量向导】对话框,如图2-6所示。


2-6

【类别】下拉列表中选择Value选项,【变量类型】下拉列表中选择int选项,【变量名】编辑框中输入m_nR,单击【完成】,为控件IDC_R映射int类型成员变量m_nR

同样,为控件IDC_GIDC_B分别映射int类型成员变量m_nGm_nB

4)对视图类进行编辑,以激活对话框,并进行绘图。

为了能够以菜单的方式激活对话框,需要对视图类进行编辑。使用项目的“资源视图”,找到IDR_MAINFRAME资源,双击打开菜单编辑器,如图2-7


2-7

创建菜单项【设置】|【颜色设置】,(步骤,在【帮助】菜单后面的文本提示【请在此键入】处右击,选择【新插入】,然后输入“设置”,“设置”下面输入“颜色设置”,然后选中这个菜单拖到【帮助】菜单前。)将其ID属性设置为ID_COLOR,如图2-8所示。

2-8

5)在【类视图】窗口中选择视图类CLi4_1View,如图2-9左图所示。单击【属性】窗口中的【事件】按钮,选择ID_COLORCOMMAND,添加函数OnColor(),如图2-9右图。

在程序运行的时候,单击【设置】|【颜色设置】菜单项即会调用OnColor()函数,其代码如下:(为了在视图类中使用对话框类,需要包含该类的头文件,在CLi4_1View.h中加入语句:#include "MyColorDialog.h",在视图类中添加对话框成员,(双击CLi4_1View)代码如下:

//操作

public:

CMyColorDialog Dlg; //声明CMyDialog类的对象

void CLi4_1View::OnColor()

{

Dlg.DoModal();//激活模态对话框

Invalidate();//调用函数OnDraw()重新绘图

}

2-9

6)为了在设置颜色后使客户区的矩形能按设定的颜色显示,还须编辑视图类中的函数OnDraw(),其代码如下:

void CLi4_1View::OnDraw(CDC*  pDC)

{

CLi4_1Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

if (!pDoc)

return;

// TODO: 此处为本机数据添加绘制代码

CRect rect;

GetClientRect(rect);//取得客户区矩形

CBrush brush,*poldbrush;

//根据对话框设定的颜色值设定brush的颜色

brush.CreateSolidBrush(RGB(Dlg.m_nR, Dlg.m_nG, Dlg.m_nB));

//brush选入GDI环境,并保存原来的画刷句柄

Poldbrush = pDC->SelectObject(&brush);

//在客户区中画矩形

pDC ->Rectangle(100, 100, 200, 300);

//恢复原来的画刷

pDC->SelectObject(poldbrush);

}

程序的运行结果:






0 0
原创粉丝点击