Windos编程实验指导书.docx
- 文档编号:3852389
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:27
- 大小:498KB
Windos编程实验指导书.docx
《Windos编程实验指导书.docx》由会员分享,可在线阅读,更多相关《Windos编程实验指导书.docx(27页珍藏版)》请在冰豆网上搜索。
Windos编程实验指导书
实验一基本编程
[程序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类的头文件包含,即:
#include"Ex_SDI.h"
#include"MainFrm.h"
#include"FirstDlg.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_NORMAL);//显示对话框
}
代码中,Create可用来以一个对话框资源来创建对话框,ShowWindow是一个CWnd成员函数,用来显示对话框,SW_NORMAL是用来指定将窗口显示成一般常用的状态。
(11)在文件MainFrm.cpp前面添加CSecondDlg类的文件包含
#include"MainFrm.h"
#include"SecondDlg.h"
(12)编译并运行。
在应用程序菜单上,多次选择“测试”“对话框”菜单项,将会在同一个位置中出现多个对话框,拖动这些对话框到适当位置,如图:
这就是无模式对话框的效果,从上述示例可以看出:
模式和无模式对话框在用编辑器设计和使用MFCClassWizard创建用户对话框类的方法是一致的,但在对话框的创建和退出的方式是不同的。
[程序4:
通用对话框]
MFC的通用对话框
对话框
用途
CColorDialog
颜色对话框,允许用户选择或创建颜色
CFileDialog
文件对话框,允许用户打开或保存一个文件
CFindReplaceDialog
查找替换对话框,允许用户查找或替换指定字符串
CPageSetupDialog
页面设置对话框,允许用户设置页面参数
CFontDialog
字体对话框,允许用户从列出的可用字体中选择一种字体
CPrintDialog
打印对话框,允许用户设置打印机的参数及打印文档
这些对话框都有一个共同特点:
它们都从用户获取信息,但并不对信息作处理。
选定一个文件后,单击[打开]按钮,就会弹出一个消息对话框,显示该文件的全路径名称。
voidCMainFrame:
:
OnTestDlg()
{
CStringfilter;
filter=“文本文件(*.txt)|*.txt|C++文件(*.h,*.cpp)|*.h;*.cpp||";
CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter);
if(dlg.DoModal()==IDOK){
CStringstr;
str=dlg.GetPathName();AfxMessageBox(str);
}
}
GetPathName是CFileDialog类成员函数,用来获取文件的
全路径名。
通用文件对话框类CFileDialog的构造函数的原型如下:
CFileDialog(BOOLbOpenFileDialog,LPCTSTRlpszDefExt=NULL,
LPCTSTRlpszFileName=NULL,
DWORDdwFlags=OFN_HIDEREADONLY|OFN_O
VERWRITEPROMPT,
LPCTSTRlpszFilter=NULL,CWnd*pParentWnd=NULL);
[程序5:
]
写一个单文档,添加一个菜单,在菜单里打开一个模态对话框,通过该对话框输入一对坐标值,单击OK按钮,在视图中该坐标位置显示自己的姓名。
[程序6:
]
用非模态对话框完成程序5的功能。
[程序7:
]
写一个单文档,添加2个按钮到工具栏,第1个按钮实现打开文件对话框,选择文件并弹出消息框显示文件名称。
第2个按钮实现打开颜色对话框选择颜色,并在视图区画出一个该颜色的矩形。
实验五常用控件
[程序1:
Ex_DlgCtrls]用控件的编程方式来创建一个按钮
(1)选择“文件”“新建”菜单,在弹出的“新建”对话框中单击“工程”标签,选择MFCAppWizard(exe)的项目类型,在工程框中输入项目名Ex_DlgCtrls
(2)单击[确定]按钮,在出现的“Step1”对话框中选择“基本对话框)”应用程序类型,单击[完成]按钮,创建一个默认的基于对话框的应用程序项目。
(3)将项目工作区切换到ClassView页面,展开CEx_DlgCtrlsDlg类,右击CEx_DlgCtrlsDlg类名,弹出如图所示的快捷菜单。
(4)从快捷菜单中选择AddMemberVariable,出现如图所示的对话框,在VariableType(变量类型)编辑框中输入CButton(MFC按钮类),在VariableName(变量名)编辑框中输入要定义的CButton类对象名m_btnWnd。
(5)单击[OK]按钮,这样VisualC++就会自动在CEx_DlgCtrlsDlg
类中添加该成员变量。
在项目工作区的ClassView页面中,双击OnInitDialog函数名,在该函数中添加下列代码:
BOOLCEx_DlgCtrlsDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
…
m_btnWnd.Create("你好",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(20,20,120,60),this,201);//创建
CFont*font=this->GetFont();//获取对话框的字体
m_btnWnd.SetFont(font);//设置控件字体
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
(6)编译并运行,结果如图所示
上述是通过编程方式实现控件的,但比较繁琐和复杂,一般是通过对话框模板中用编辑器指定控件。
[程序2:
映射控件消息]
1.在MFC中,映射一个控件消息是非常简便的,如下面的过程是对新添加的按钮控件映射BN_CLICKED(单击)消息。
将项目工作区窗口切换到ResourseView页面,双击Dialog资源下的标识IDD_EX_DLGCTRLS_DIALOG,打开该对话框资源模板。
删除“TODO:
在这里设置对话控制。
”控件,添加一个按钮控件,保留其默认属性。
如图所示。
2按快捷键Ctrl+W,打开MFCClassWizard对话框,查看“Classname”列表中是否选择了CEx_DlgCtrlsDlg,在IDs列表中选择IDC_BUTTON1,这是添加按钮后,系统自动为此按钮设置的默认标识符,然后在Messages框中选择BN_CLICKED消息。
3单击[AddFunction]按钮或双击BN_CLICKED消息,出现“AddMemberFunction”对话框,在这里可以输入成员函数的名称,系统默认的函数名为OnButton1。
4单击[OK]按钮,在MFCClassWizard的“Memberfunctions”列表中将列出新增加的成员函数。
在此成员函数中添加下列代码:
voidCEx_DlgCtrlsDlg:
:
OnButton1()
{
MessageBox("你按下了\"Button1\"按钮!
");
}
5.
编译并运行,当单击[Button1]按钮时,就会执行OnButton1函数,弹出一个消息对话框。
这就是按钮BN_CLICKED消息的映射过程,其他控件的消息也可以类似操作。
[程序3:
]
写一个单文档程序,用菜单命令打开一个对话框,通过该对话框中的红色,绿色,蓝色单选按钮选择颜色,在视图中绘制不同颜色的矩形。
[程序4:
]
写一个单文档程序,添加一个工具栏按钮。
单击该按钮弹出一个对话框,通过该对话框中的红色,绿色,蓝色复选框选额颜色,在视图中输出一行文本。
[程序5:
]
写一个对话框程序,根据用户从列表框中选择的线条样式,在对话框中绘制一个矩形。
线条样式有水平线,垂直线,向下斜线,十字线等四种画刷。
[程序6:
]
用组合框取代列表框,实现程序5一样的功能。
实验六文档与视图
[程序1:
]
编写单文档程序,为文档对象添加数据成员recno(int类型),表示学号,stuname(CString类型)表示姓名,并在视图中输出文档对象中的内容。
要求当按向上箭头或按向下箭头时,学号每次递增1或递减1,能在视图中反映学号变化,并保存文档对象的内容。
【程序2:
单文档综合程序】
(1)选择“文件”“新建”菜单,在弹出的“新建”对话框中选择“工程”标签,选择MFCAppWizard(exe)的项目类型,指定项目工作文件夹位置,输入项目名Ex_SDI2,单击[确定]按钮。
(2)在向导的第一步中,将应用程序类型选为“单个文档”。
(3)单击[下一个]按钮,出现向导的第二步对话框,在这里用户可以选择程序中是否加入数据库的支持。
(4)单击[下一个]按钮,出现向导的第三步对话框,允许用户在程序中加入复合文档、自动化、ActiveX控件的支持。
(5)单击[下一个]按钮,出现向导的第四步对话框,对话框的前几项依次确定对浮动工具条、打印与预览以及通信网络等特性的支持。
(6)单击[高级]按钮,出现下图所示的对话框,分别用于文档模板字串资源内容和窗口风格的修改。
(7)单击[关闭]按钮回到向导对话框,单击[下一个]按钮,出现如下图所示的对话框。
(8)单击[下一个]按钮,出现对话框。
在这里,用户可以对MFCAppWizard提供的默认类名、基类名、各个源文件名进行修改。
当窗口创建之前,系统自动调用PreCreateWindow虚函数。
在用MFCAppWizard创建文档应用程序结构时,MFC已为主窗口或文档窗口类自动重载了该虚函数。
BOOLCMainFrame:
:
PreCreateWindow(CREATESTRUCT&cs)
{
//新窗口不带有[最大化]按钮
cs.style&=~WS_MAXIMIZEBOX;
//将窗口的大小设为1/3屏幕并居中
cs.cy=:
:
GetSystemMetrics(SM_CYSCREEN)/3;
cs.cx=:
:
GetSystemMetrics(SM_CXSCREEN)/3;
cs.y=((cs.cy*3)-cs.cy)/2;
cs.x=((cs.cx*3)-cs.cx)/2;
//调用基类的PreCreateWindow函数
retur
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windos 编程 实验 指导书