Windos编程实验指导书解析.docx

上传人:b****0 文档编号:9193553 上传时间:2023-05-17 格式:DOCX 页数:43 大小:1.12MB
下载 相关 举报
Windos编程实验指导书解析.docx_第1页
第1页 / 共43页
Windos编程实验指导书解析.docx_第2页
第2页 / 共43页
Windos编程实验指导书解析.docx_第3页
第3页 / 共43页
Windos编程实验指导书解析.docx_第4页
第4页 / 共43页
Windos编程实验指导书解析.docx_第5页
第5页 / 共43页
Windos编程实验指导书解析.docx_第6页
第6页 / 共43页
Windos编程实验指导书解析.docx_第7页
第7页 / 共43页
Windos编程实验指导书解析.docx_第8页
第8页 / 共43页
Windos编程实验指导书解析.docx_第9页
第9页 / 共43页
Windos编程实验指导书解析.docx_第10页
第10页 / 共43页
Windos编程实验指导书解析.docx_第11页
第11页 / 共43页
Windos编程实验指导书解析.docx_第12页
第12页 / 共43页
Windos编程实验指导书解析.docx_第13页
第13页 / 共43页
Windos编程实验指导书解析.docx_第14页
第14页 / 共43页
Windos编程实验指导书解析.docx_第15页
第15页 / 共43页
Windos编程实验指导书解析.docx_第16页
第16页 / 共43页
Windos编程实验指导书解析.docx_第17页
第17页 / 共43页
Windos编程实验指导书解析.docx_第18页
第18页 / 共43页
Windos编程实验指导书解析.docx_第19页
第19页 / 共43页
Windos编程实验指导书解析.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Windos编程实验指导书解析.docx

《Windos编程实验指导书解析.docx》由会员分享,可在线阅读,更多相关《Windos编程实验指导书解析.docx(43页珍藏版)》请在冰点文库上搜索。

Windos编程实验指导书解析.docx

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,能在视图中反映学号变化。

(1)首先建立一个单文档程序。

(2)在文档类添加类的成员变量。

头文件:

public:

intrecno;

CStringstuname;

并在实现文件里构造函数中初始化:

CDemo1Doc:

:

CDemo1Doc()

{

//TODO:

addone-timeconstructioncodehere

recno=1;

stuname="张三";

}

(3)在ClassWizard里面利用消息映射(MessageMaps)在对应类中(如*View)添加对WM_KEYDOWN的响应函数。

添加下面阴影部分的代码。

voidCDemo1View:

:

OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

//获取文档类的指针

CDemo1Doc*pDoc=GetDocument();

switch(nChar)

{

caseVK_UP:

//上

//学号递增

pDoc->recno++;

break;

caseVK_DOWN:

//下

//学号递减

pDoc->recno--;

break;

}

//刷新客户区,重新绘制

Invalidate();

CView:

:

OnKeyDown(nChar,nRepCnt,nFlags);

}

(4)在视图类的OnDraw函数实现在客户区显示姓名和学号。

添加下面阴影的代码:

voidCDemo1View:

:

OnDraw(CDC*pDC)

{

CDemo1Doc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

CStringmessage;

message.Format("学号:

%d,姓名:

%s",pDoc->recno,pDoc->s

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2