实验四 对话框实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四对话框实验

一、实验目的和要求

1、掌握模态对话框的调用方法。

2、掌握字体对话框和颜色对话框的使用方法。

二、实验内容

设计下图所示界面,要求;

1)程序运行时在视图中显示字符串。

2)点击子菜单“文件对话框”时,将显示文件对话框。

3)点击子菜单“字体对话框”时,调用字体对话框为视图中显示的文字设置字体。

4)点击子菜单“颜色对话框”时,调用颜色对话框为视图中显示的文字设置颜色。

图实验四要求的程序运行界面

三、实验步骤

1. 新建工程

新建一个工程,工程名称为CommonDialog,工程类型为MFC AppWizard(exe),应用程序类型为单文档/视图结构,其他设置采用默认值,最终得到一个基于单文档/视图结构的框架程序。

2. 添加菜单资源

在项目工作区窗口中,选择ResourceView选项卡中的菜单资源Menu,在其包含的主菜单IDR_MAINFRAME上双击,打开菜单资源编辑器。利用菜单资源编辑器为主菜单IDR_MAINFRAME添加一列“通用对话框”菜单,它包含三个菜单项,ID号分别为ID_FONT、ID_COLOR和ID_FILE,标题分别为“字体对话框”、“颜色对话框”和“文件对话框”,如图4.1所示。

图4.1 添加“通用对话框”菜单

3. 定义变量

在项目工作区窗口中,选择ClassView选项卡中的视图类CCommonDialogView,单击右键。在弹出菜单中选择Add Member Variable菜单项,为CCommonDialogView类添加变量m_font和m_color,变量类型分别为LOGFONT和COLORREF。

4. 为视图类CCommonDialogView的以下成员函数添加代码

CCommonDialogView::CCommonDialogView()

{

// TODO: add construction code here

m_color=RGB(255,0,0); //初始化颜色变量

memset(&m_font, 0, sizeof(m_font)); //将m_font所在内存空间清零

m_font.lfWeight = 50; //设置字体宽度为50

m_font.lfHeight = 50; //设置字体高度为50

strcpy(m_font.lfFaceName, "黑体"); //设置字体名称

}

void CCommonDialogView::OnDraw(CDC* pDC)

{

CCommonDialogDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

CString str="欢迎使用Visual C++6.0"; //定义字符串变量,并赋初值

CRect rect; //定义矩形域

GetClientRect(rect); //得到当前客户区的大小,存入rect CFont newfont,*oldfont; //定义字体变量

newfont.CreateFontIndirect(&m_font); //生成新字体

oldfont=pDC->SelectObject(&newfont); //将新字体选入当前绘图环境

pDC->SetBkColor(RGB(128,128,128)); //设定文字背景色

pDC->SetTextColor(m_color); //设定文本颜色

pDC->TextOut(rect.right/3,rect.bottom/2,str); //输出文字

pDC->SelectObject(oldfont); //恢复老的字体

}

5. 定义菜单的命令消息处理函数,调用通用对话框

在图4.1所示的界面中,选择菜单项“字体对话框”,单击右键。在弹出菜单中选择“建立类向导”菜单项,调出类向导界面。在弹出的类向导界面中,Class name选择CCommonDialogView,Object IDs选择ID_FONT,Messages选择COMMAND,然后单击Add Function按钮,定义菜单项“字体对话框”的命令消息处理函数OnFont(),并在该函数中添加下列代码。

void CCommonDialogView::OnFont()

{

// TODO: Add your command handler code here

CFontDialog font; //定义字体对话框类型的变量

int i=font.DoModal(); //调用字体对话框,得到函数返回值

if (i==IDOK) //如果选了OK按钮

{

font.GetCurrentFont(&m_font); //得到选中的字体信息,存入m_font变量

Invalidate(); //使窗口重画

}

}

重复第5步的操作,定义菜单项“颜色对话框”和“文件对话框”的命令消息处理函数,添加下列代码,调用颜色对话框和文件对话框。

void CCommonDialogView::OnColor()

{

// TODO: Add your command handler code here

CColorDialog color; //定义颜色对话框类型的变量

int i=color.DoModal(); //调用颜色对话框

if (i==IDOK) //如果点击了OK按钮

{

m_color=color.GetColor(); //得到选中的颜色信息,存入m_color变量

Invalidate(); //使窗口重画

}

}

void CCommonDialogView::OnFile()

{

// TODO: Add your command handler code here

CString filter,str; //定义字符串变量

filter="Worksheet Files (*.xls)|*.xls |All Files (*.*)|*.*||"; //定义过滤字符串

CFileDialog file(TRUE,NULL,NULL,OFN_OVERWRITEPROMPT,filter,NULL); //定义字体对话框

int i=file.DoModal(); //调用字体对话框

if (i==IDOK) //如果选择OK按钮

{

相关文档
最新文档