实验四 对话框实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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按钮
{