实验一基本编程[程序1:Ex_SDIDemo]创建一个默认的单文档应用程序1.开始选择“文件”“新建”菜单,在弹出的“新建”对话框中选择“工程”标签,这时显示出一系列的应用程序项目类型;2.选择程序类型(1)从应用程序类型单个文档(SingleDocument,简称SDI)、多重文档(MultipleDocument,简称MDI)和基本对话框(DialogBased,基于对话框的应用程序)中选择“单个文档”。(2)决定应用程序中是否需要MFC的文档视图(“文档/查看体系结构支持”)结构的支持。(3)选择资源所使用的语言3.简单创建保留其他的默认选项,单击[完成]按钮出现一个对话框,显示出用户在步骤中作出的选择,单击[确定]按钮系统开始创建。4.编译并运行到这里为止,用户虽然没有编写任何程序代码,但MFCAppWizard已经根据用户的选择内容自动生成基本的应用程序框架。单击编译工具条上的运行工具按钮或按快捷键Ctrl+F5,系统开始编连并运行生成的单文档应用程序可执行文件Ex_SDIDemo.exe请仔细查看生成的文件,理解文件内容。【程序2:单文档消息映射】生成一个单文档程序,实现鼠标右键单击,发送自定义消息,显示一个消息框.【程序3:绘制直线鼠标消息实验】生成一个单文档程序,实现用鼠标绘制直线的功能.【程序4:按键消息实验】生成一个单文档程序,当按下A键时,在消息窗口中显示“输入字符A!”。.实验二图形与文本【程序1:】编写一个单文档的应用程序,在视图窗口中显示一行文本,要求文本颜色为红色,背景色为黄色。【程序2:】编写一个单文档的应用程序,在客户区使用不同的画笔和画刷绘制点、折线、曲线、圆角矩形、弧、扇形和多边形等几何图形。【程序3:】编写一个单文档的应用程序,在视图窗口中显示3个圆,通过使用不同颜色的画笔以及画刷来模拟交通红绿灯。【程序4:】编写一个单文档的应用程序,在视图窗口实现一行文本的水平滚动显示,要求每个周期文本为红、黄两种颜色,字体为宋、楷两种字体。实验三菜单和工具栏【程序1:】编写一个单文档,为程序添加主菜单“显示”,且“显示”菜单中包含“文本”和“图形”2个菜单项。当程序运行时,用户单击”文本“菜单项,可以在视图窗口中显示”我已经学会了如何设计菜单程序!“文本信息,单击“图形”菜单项,在视图窗口中画出一个红色的实心矩形。【程序2:】在程序1的基础上,新增菜单项添加控制功能,当“文本”菜单项被选中时,图形“菜单项无效;当”图形“菜单项被选中时,”文本“菜单项无效。【程序3:】创建一个单文档,为该程序添加2个按钮到默认工具栏,单击第1个按钮,在视图窗口中弹出用于文件打开的”打开“对话框;单击第2个按钮,在消息框中显示”我已经学会使用默认工具栏了!“文本信息。【程序4:】在程序2上,新增工具栏,完成菜单里的对应的功能。并在状态栏中显示鼠标光标的坐标和当前系统时间。实验四对话框[程序1:Ex_DlgDemo]使用向导创建对话框应用程序(1)选择“文件”“新建”菜单,在弹出的“新建”对话框中选择“工程”页面,选择MFCAppWizard(exe),在工程框中输入项目名Ex_DlgDemo。(2)单击[确定]按钮,在出现的“Step1”对话框中选择“基本对话(框)”应用程序类型,如图所示。(3)单击[下一个]按钮,出现如图(右)所示的对话框,允许用户设置对话框的风格及ActiveX控件等特点的支持。(4)单击[下一个]按钮出现如图(左)所示的对话框,两个方面的选项可供用户选择:一是在源文件中是否加入注释用来引导用户编写程序代码,另一是使用动态链接库还是静态链接库。(5)保留默认选项,单击[下一个]按钮出现如图(右)所示的对话框。(6)单击[完成]按钮出现一个对话框,显示出用户在前面几个步骤中作出的选择内容,单击[确定]按钮系统开始创建。应用程序可执行文件Ex_DlgDemo.exe,结果如图所示[程序2:Ex_SDI]在单文档程序中添加对话框资源创建一个默认的单文档应用程序项目Ex_SDI。(1)选择“插入”“资源”菜单,或按快捷键Ctrl+R打开“插入资源”对话框中看到资源列表中存在Dialog项,若单击Dialog项左边的“+”号,将展开对话框资源的不同类型选项,表列出各种类型的对话框资源的不同用途。“插入资源”对话框:(2)对展开的不同类型的对话框资源不作任何选择,选中“Dialog”,单击[新建]按钮,系统就会自动为当前应用程序添加了一个对话框资源。系统为对话框资源自动赋给它一个默认标识符名称使用通用的对话框模板创建新的对话框资源。对话框的默认标题为Dialog,有[OK]和[Cancel]两个按钮,这两个按钮的标识符分别为IDOK和IDCANCEL。对话框模板资源所在的窗口称为对话框资源编辑,在这里可以通过控件工具栏和布局工具栏向对话框添加和布局控件,并可设置对话框的属性。VisualC++6.0开发环境的工具栏具有“浮动”与“停泊”功能,图中的控件工具栏是处于“浮动”状态,通常将它拖放到窗口右侧,以便于操作。在对话框模板处右击鼠标,从弹出的快捷菜单中选择“属性”菜单项,出现如图所示的对话框属性窗口。对话框的属性有General(一般)、Styles(风格)、MoreStyles(更多)、ExtendedStyles(扩展风格)、MoreExtendedStyles(更多扩展风格)等部分,这里仅介绍最常用的General属性。对话框的General属性项目说明ID框修改或选择对话框的标识符名称标题框输入对话框的标题名称,中英文均可,如“我的对话框”字体按钮单击此按钮可选择字体的种类(如宋体)及尺寸(如9号)Xpos/Ypos对话框左上角在父窗口中的X、Y坐标,都为0时表示居中菜单框默认值为无,当对话框需要菜单时输入或选择指定的菜单资源Classname默认值为无,它提供C/C++语言编程时所需要的对话框类名,对MFC类库的资源文件来说,该项不被激活。将添加对话框的General属性进行如下三点修改,将对话框标识符改成IDD_DIALOG_FIRST;将对话框标题改为“我的第一个对话框”;单击[字体]按钮,通过弹出的字体对话框将对话框内的文本设置成“宋体,9”,以使自己的对话框和Windows中的对话框保持外观上的一致。在程序中使用对话框(1)在项目工作区窗口中选择ResourceView页面,双击资源“Menu”项中的IDR_MAINFRAME,则菜单编辑器窗口出现在主界面的右边,相应的Ex_SDI项目的菜单资源被显示出来,在菜单的最后一项,VisualC++为用户留出了一个空位置,用来输入新的菜单项,如图(2)在菜单的空位置上双击鼠标左键,则出现它的属性对话框,在标题框中输入“测试(&T)”,结果如图所示,其中符号&用来其后面的字符作为该菜单项的助记符,这样当按住“Alt”键不放,再敲击该助记符键时,对应的菜单项就会被选中,或在菜单打开时,直接按相应的助记符键,对应的菜单项也会被选中。(3)单击菜单属性对话框中的“保存可见”(KeepVisible)按钮,使此属性对话框一直可见,以方便操作。单击“测试”菜单项下方的空位置,在属性对话框中,输入标题“对话框(&D)”,在ID框输入该菜单项的资源标识;_TEST_DLG,结果如图所示,单击属性对话框右上角的关闭按钮(4)用鼠标将新添加的菜单项拖到“查看”和“帮助”菜单项之间,结果如图所示。(5)选择“查看”“建立类向导”菜单命令或直接按Ctrl+W快捷键,则出现MFCClassWizard对话框,该对话框会自动切换到MessageMaps页面。(6)从“Classname”组合框中选择CMainFrame,在ObjectIds列表中选择ID_TEST_DLG,然后在Messages框中选择COMMAND消息。(7)单击[AddFunction]按钮或双击COMMAND消息,出现“AddMemberFunction”对话框以输入成员函数的名称。系统默认的函数名为OnTestDlg,如图所示。该函数是对菜单项ID_TEST_DLG的映射,也就是说,当在应用程序运行时,用户选择“对话框”,则该函数OnTestDlg被调用,执行函数中的代码。(8)单击[OK]按钮,在ClassWizard的“Memberfunctions”列表中将列出新增加的成员函数。选择此函数,单击[EditCode]按钮(或直接在函数名双击鼠标),在此成员函数中添加下列代码:voidCMainFrame::OnTestDlg(){CFirstDlgdlg;//定义对话框类对象dlg.DoModal();//显示对话框}代码中,DoModal是CDialog基类成员函数,它是用来显示和终止模式对话框。(9)在OnTestDlg函数的实现文件MainFrm.cpp的前面添加CFirstDlg类的头文件包含,即:#includeEx_SDI.h#includeMainFrm.h#includeFirstDlg.h“(10)编译并运行。在应用程序菜单上,选择“测试”“对话框”菜单项,将出现如图的对话框,这个对话框就是刚才添加的对话框。[程序3:Ex_Modeless]创建并使用无模式对话框(1)用MFCAppWizard(exe)创建一个默认的单文档应用程序x_Modeless。(2)在该项目中添加一个对话框资源,将其标识符设为IDD_DIALOG_SECOND,标题设为“无模式对话框”,(3)对话框字体和大小设为“宋体,9号”。为IDD_DIALOG_SECOND对话框资源创建一个对话框类CSecondDlg。(4)按Ctrl+W快捷键打开MFCClassWizard,从“Classname”列表中选择CSecondDlg,在IDs列表中选择IDOK,是对话框中[OK]按钮的标识符,然后在Messages框中选择BN_CLICKED(单击按钮)消息,单击[AddFunction]按钮或双击BN_CLICKED消息,出现“AddMemberFunction”对话框以输入成员函数的名称,保留系统默认的函数名为OnOK,如图所示。(5)修改CSecondDlg::OnOK函数中的代码。voidCSecondDlg::OnOK(){//添加其他代码使用户输入对话框的数据有效DestroyWindow();//终止对话框显示deletethis;//删除对话框,释放内存空间}代码中,DestroyWindow是对话框基类CWnd的一个成员函数,用来终止窗口。(6)添加[Cancel]按钮(标识符为IDCANCEL)的BN_CLICKED消息映射,并修改其映射函数CSecondDlg::OnCancel的代码。voidCSecondDlg::OnCancel()//单击[Cancel](取消)按钮{DestroyWindow();deletethis;}(7)在项目工作区窗口中选择ResourceView页面,双击资源“Menu”项中的IDR_MAINFRAME,打开菜单资源。(8)在菜单“查看”与“帮助”之间添加一个“测试(&T)”菜单,该菜单项的资源标识设为ID_TEST_DLG。(9)按Ctrl+W快捷键,打开MFCClassWizard对话框,在MessageMaps页面中从“Classname”列表中选择CMainFrame,在ObjectIDs列表中选择ID_TEST_DLG,然后在Messages框中选择COMMAND消息。(10)单击[AddFunction]按钮或双击COMMAND消息,出现“AddMemberFunction”对话框,取系统默认的函数名OnTestDlg,并在此成员函数中添加下列代码:voidCMainFrame::OnTestDlg(){CSecondDlg*pDlg=newCSecondDlg;//使用new为对分配内存空间pDlg-Create(IDD_DIALOG_SECOND);//创建对话框pDlg-ShowWindow(SW_NOR