您的位置:巴哥网 > 报告范文 > 报告格式 > Windows可视化编程visual c++实验二报告 正文

Windows可视化编程visual c++实验二报告

2020-06-14 22:56:57 来源网站:巴哥网 本文移动端:Windows可视化编程visual c++实验二报告

Windows可视化编程visual c++实验二报告 本文关键词:可视化,编程,实验,报告,Windows

Windows可视化编程visual c++实验二报告 本文简介:实验二标准控件一、题目9-171.题目具体内容如图9-8创建应用程序,在“形状”列表框中选择要绘制的图形,在“笔颜色”下拉列表框中选择画笔的颜色,在“刷子颜色”下拉列表框中选择画刷的颜色。在“线型”组合框中选择画笔的线型,在“填充类型”中选择画刷填充类型。单击“绘图”按钮按照前面的选项绘制图形,单击

Windows可视化编程visual c++实验二报告 本文内容:

实验二

标准控件

一、

题目9-17

1.

题目具体内容

如图

9-8

创建应用程序,在

“形状”

列表框中选择要绘制的图形,在

“笔颜色”

下拉列表框中选择画笔的颜色,在

“刷子颜色”

下拉列表框中选择画刷的颜色。在

“线型”

组合框中选择画笔的线型,在

“填充类型”

中选择画刷填充类型。单击

“绘图”按钮按照前面的

选项绘制图形,单击

“退出”

按钮退出程序。

2.

分析和核心代码

(1)创建

MFC应用程序

在对话框中选择

Dialogbased

创建基于对话框的应用程序。

(2)在工作区窗口中选择资源视图,打开

Dialog

件夹,双击在右侧窗口出现了待编辑的对话框。利用控件工具,按照图

9-8

建立对话框,添加各个按钮,对话框中各控件的属性如下

控件名称

ID

Caption

静态文本

IDC

-

STATIC

形状

列表框

IDC

-

LIST

-

SHAPE

静态文本

IDC

-

STATIC

笔颜色

下拉列表框

IDC

-

COMBO

-

PENCOLOR

静态文本

IDC

-

STATIC

刷子颜色

下拉列表框

IDC

-

COMBO

-

BRUSHCOLOR

组合框

IDC

-

STATIC

线型

单选按钮

IDC

-

RADIO

-

SOLID

Solid

单选按钮

IDC

-

RADIO

-

DASH

Dash

单选按钮

IDC

-

RADIO

-

DOT

Dot

单选按钮

IDC

-

RADIO

-

DASHDOT

DashDot

组合框

IDC

-

STATIC

填充类型

单选按钮

IDC

-

RADIO

-

SOLIDBRUSH

SolidBrush

单选按钮

IDC

-

RADIO

-

CROSS

Cross

单选按钮

IDC

-

RADIO

-

PDIAGONAL

PDiagonal

单选按钮

IDC

-

RADIO

-

BDIAGONAL

BDiagonal

下压式按钮

IDC

-

BTN

-

DRAW

绘制

下压式按钮

IDOK

退出

(3)建立好各控件后,在

“笔颜色”

下拉列表框,选择属性菜单项,在弹出的对话框中单击数据选项卡。输入完一行后,按下

Ctrl

键的同时单击

Enter键。同理在

“画刷颜色”

下拉列表框的数据选项卡中输入同样的内容。这样一行文本就代表下拉列表框中的一个颜色选项。分别在

Solid

SolidBrush

单选按钮上单击鼠标右键,选择属性菜单项,选中

Radio

Button

Properties

对话框中的

Group

选项。创建单选按钮时要按照图中从上到下的顺序,保证单选按钮的

ID

值是连的,才能保证两组单选按钮的互斥性。

(4)在

Workspace

窗口中,选择

类视图选项卡,在类

CshiyanDlg

上单击鼠标右键,选择

添加成员变量菜单项,加入

public

型变量如表。

表9-19

在对话框类中加入的成员变量

变量类型

变量名称

int

m-

nPenStyle

标志由“线型”组合框中所选择的画笔的类型

int

m-

nBrushStyle

标志由“填充类型”组合框中所选择的画刷类型

COLORREF

m-

crPenColor

标志“笔颜色”列表框中所选择的画笔颜色

COLORREF

m-

crBrushColor

标志“刷子颜色”列表框中所选择的画刷颜色

在CMyshiyanDlg

.cpp的OnInitDialog函数中加入代码如下

m_pencolorRGB255,0,0;

m_brushcolorRGB255,0,0;

m_penstylePS_SOLID;

m_brushstylePS_SOLID;

m_list.SetCurSel0;

m_combo1.SetCurSel0;

m_combo2.SetCurSel0;

CheckRadioButtonIDC

-

RADIO

-

SOLID,IDC

-

RADIO

-

DASHDOT,IDC

-

RADIO

-

SOLID;

CheckRadioButton

IDC

-

RADIO

-

SOLIDBRUSH,IDC

-

RADIO

-

BDIAGONAL,IDC

-

RADIO

-

SOLIDBRUSH;

在这里设置了各变量的初始值。默认笔和刷的颜色为红色,笔的线型为实线,画刷填充类型为实填充。

5打开类向导对话框,选择

消息选

项卡,在Object

IDs

列表框中选择各个单选按钮的

ID

值,在

Messages

表框中选

择消息

类型。

单击

Add

Function

按钮映像各单选按钮的消息处理函数如表

ID

消息

消息处理函数

IDC-RADIO-SOLID

BN-CLICKED

OnRadioSolid

IDC-RADIO-DASH

BN-CLICKED

OnRadioDash

IDC-RADIO-DOT

BN-CLICKED

OnRadioDot

IDC-RADIO–DASHDOT

BN-CLICKED

onRadioDashdot

IDC-RADIO-SOLIDBRUSH

BN-CLICKED

OnRadioSolidBrush

IDC-RADIO-CROSS

BN-CLICKED

OnRadioCross

IDC-RADIO-PDIAGONAL

BN-CLICKED

OnRadioPdiagonal

IDC-RADIO-BDIAGONAL

BN-CLICKED

OnRadioBdiagonal

在单选按钮上单击鼠标,系统发送

BN

-

CLICKED

消息,调用消息处理函数,在这些函数中加入代码设置标志笔和画刷类型的变量

m

-

nPenStyle

m

-

nBrushStyle。

void

CshiyanDlgOnBnClickedSolid

{

//

TODO

在此添加控件通知处理程序代码

m_penstylePS_SOLID;

}

void

CshiyanDlgOnBnClickedDash

{

//

TODO

在此添加控件通知处理程序代码

m_penstylePS_DASH;

}

void

CshiyanDlgOnBnClickedDot

{

//

TODO

在此添加控件通知处理程序代码

m_penstylePS_DOT;

}

void

CshiyanDlgOnBnClickedDashdot

{

//

TODO

在此添加控件通知处理程序代码

m_penstylePS_DASHDOT;

}

void

CshiyanDlgOnBnClickedSolidbrush

{

//

TODO

在此添加控件通知处理程序代码

m_brushstylePS_SOLID;

}

void

CshiyanDlgOnBnClickedCross

{

//

TODO

在此添加控件通知处理程序代码

m_brushstyleHS_CROSS;

}

void

CshiyanDlgOnBnClickedFdiagonal

{

//

TODO

在此添加控件通知处理程序代码

m_brushstyleHS_FDIAGONAL;

}

void

CshiyanDlgOnBnClickedBdiagonal

{

//

TODO

在此添加控件通知处理程序代码

m_brushstyleHS_BDIAGONAL;

}

6

打开类视图对话框,为下拉列表框映像消息处理函数如表所示。

Object

IDs

消息处理函数

IDC

-

COMBO

-

PENCOLOR

CBN

-

SELENDOK

OnSelendokComboPencolor

IDC

-

COMBO

-

BRUSHCOLOR

CBN

-

SELENDOK

OnSelendokComboBrushcolor

当在下拉列表框中选择一个颜色选项时,系统发送此消息,调用消息处理函数,在这些消息处理函数中设置颜色变量

void

CshiyanDlgOnCbnSelendokCombo1

{

//

TODO

在此添加控件通知处理程序代码

int

i;

im_combo1.GetCurSel;

ifi0

{m_pencolorRGB255,0,0;}

else

ifi1

{m_pencolorRGB0,255,0;}

else

ifi2

{m_pencolorRGB0,0,255;}

}

void

CshiyanDlgOnCbnSelendokCombo2

{

//

TODO

在此添加控件通知处理程序代码

int

i;

im_combo2.GetCurSel;

ifi0

{m_brushcolorRGB255,0,0;}

else

ifi1

{m_brushcolorRGB0,255,0;}

else

ifi2

{m_brushcolorRGB0,0,255;}

}

首先调用函数

GetCurSel

得到当前选项在下拉列表框中的位置,然后根据此位置设置颜色变量。

7在消息处理函数

OnBnClickedButton1,加入如下代码

void

CshiyanDlgOnBnClickedButton1

{

//

TODO

在此添加控件通知处理程序代码

CClientDC

hDCthis;

CPenpenold,pennew;

CBrushbrushold,brushnew,brushback;

CRect

rectclient;

GetClientRect

CRect

rectdrawrectclient.right-170,20,rectclient.right-20,170;

brushback.CreateSolidBrushRGB255,255,255;

brusholdhDC.SelectObject

hDC.Rectanglerectdraw;

ifm_brushstyle0

{

brushnew.CreateHatchBrushm_brushstyle,m_brushcolor;

}

else

{

brushnew.CreateSolidBrushm_brushcolor;

}

pennew.CreatePenm_penstyle,1,m_pencolor;

penoldhDC.SelectObject

hDC.SelectObject

ifm_list.GetSel0

{

hDC.MoveTorectdraw.left,rectdraw.top;

hDC.LineTorectdraw.right,rectdraw.bottom;

}

else

ifm_list.GetSel1

{

hDC.Ellipserectdraw;

}

else

ifm_list.GetSel2

{

hDC.Rectanglerectdraw;

}

else

ifm_list.GetSel3

{

hDC.RoundRectrectdraw,CPoint50,50;

}

hDC.SelectObjectpenold;

hDC.SelectObjectbrushold;

}

首先得到设备环境指针

HDC,然后调GetClientRect

得到用户区的大小,并定义绘图

rectclient。根据

m

-

nBrushStyle

m

-

crBrushColor

创建画刷对象,根据

m

nPen-Style

m

-

crPenColor

创建画笔。最后调用列表框类成员函数

GetSel

得到选中的列表框项的位置,依此绘制图形。

3.

测试数据、预期结果、测试结果

测试结果选择条件参数,

5.调试过程及心得体会

做的时候有很多不明白的地方,用到了很多以前讲解的知识,关于MFC和标准控件的应用虽然上课听了理论知识,但是

理解的不够透彻,调试的时候出现了很多错误。以后应该多看看书本,做练习才能提高编程能力。

实验题目9-20

1.

题目

建立一个程序进行数据的管理,设有

10

组数据,每一组数据有

5

个元素,要求该程序能实现如下功能本例的程文件名为

9

-

20

1

从键盘依次输入

10

组数据;

2

调出任意的一组数据并显示出来;

3

修改任意一组数据或一组数据中的任意一个元素;

4

求出任意一组数据中的最大值和最小值。

2.分析和核心代码

1

利用

MFC

向导建立程序框架

2在对话框中添加相应的控件,并根据表设置其属性。

9

-21要求开发的界面

对象

ID

Caption或说明

变量

类型

编辑框

IDC-

EDIT1

组号

m-

Group-

Edit

CEdit

编辑框

IDC-

EDIT2

数据1

m-

No1-

Edit

CEdit

编辑框

IDC-

EDIT3

数据2

m-

No2-

Edit

CEdit

编辑框

IDC-

EDIT4

数据3

m-

No3-

Edit

CEdit

编辑框

IDC-

EDIT5

数据4

m-

No4-

Edit

CEdit

编辑框

IDC-

EDIT6

数据5

m-

No5-

Edit

CEdit

编辑框

IDC-

STATIC

数据

编辑框

IDC-

EDIT7

最大值

m-

Max-

Edit

CEdit

编辑框

IDC

EDIT8

最小值

m-Min

-Edit

CEdit

编辑框

IDC-

STATIC

结果

4

根据图中的布局,利用图9-10中的“按钮”按钮单击鼠标左键,在对话框窗口中的

“输入数据”

按钮的位置上,按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的菜单中选择

Properties

选项,在弹出的对话框如图

9-

24

所示中设置按钮控件的

ID

值和

Caption

属性。按照此方法建立图

9-23

所示的

4个按钮,并将各对象属性设置如表

9-

27

所示。

表9-27

【9-20】中各按钮属性的设置

对象

ID

Caption

命令按钮

IDC-

BUTTON1

输入数据

命令按钮

IDC-

BUTTON2

输出数据

命令按钮

IDC-

BUTTON3

检索数据

命令按钮

IDC-

BUTTON4

退出

5

加入代码

①为了记录输入的10组数据,需要在文件9-

20Dlg

.h中定义结构,如下

structstruData

{

doubledfData[5];

};

“组号”编辑框中输入组号,然后在“数据”编辑框中输入数据,单击“输入数据”将存储数据。,选择

MessageMaps选项卡,在Object

IDs列表框中选择IDC-

BUTTON1,在

Messages列表框中选BN-CLICKED如图所示。单击Add

Function按钮,在弹出的

Add

Member

Function对话框中将函数名改为OnBtn,然后单击

Edit

Code按钮,加入下列代码

void

Cshi9_20DlgOnBnClicked

{

//

TODO

在此添加控件通知处理程序代码

UpdateDatatrue;

data[m_groupnum][0]m_data1;

data[m_groupnum][1]m_data2;

data[m_groupnum][2]m_data3;

data[m_groupnum][3]m_data4;

data[m_groupnum][4]m_data5;

UpdateDatafalse;

}

CString

cstrGroup,cstrData[5];

//输入数据为字符串型数据

图9-27

在Messages列表框中选择BN-CLICKED

intiGroup;

//组号为整数

m-

Group-

Edit.GetWindowTextcstrGroup;

//得到组号字符串

m-

No1-

Edit.GetWindowTextcstrData[0];

//得到输入数据字符串

m-

No2-

Edit.GetWindowTextcstrData[1];

m-

No3-

Edit.GetWindowTextcstrData[2];

m-

No4-

Edit.GetWindowTextcstrData[3];

m-

No5-

Edit.GetWindowTextcstrData[4];

iGroupatoiLPCTSTRcstrGroup;

//将组号转化为整数形式

forinti0;iAppendMenuMF_STRING,IDM_ABOUTBOX,strAboutMenu;

}

}

//

设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动

//

执行此操作

SetIconm_hIcon,TRUE;//

设置大图标

SetIconm_hIcon,FALSE;//

设置小图标

//

TODO

在此添加额外的初始化代码

return

TRUE;

//

除非将焦点设置到控件,否则返回

TRUE

}

采用给

“Clear

All”

按钮映像消息处理函数相同的方法,在

类向导中的

ObjectIDs

框中选择

IDC

-

SINGLEEDIT,在Messages

框中选择

WM

-

SETFOCUS

消息,单击Add

Function

按钮,接受默认函数名,然后单击

Edit

Code

按钮,加入如下代码

void

Cshi9_21DlgOnEnKillfocusEdit1

{

//

TODO

在此添加控件通知处理程序代码

m_flag1true;

m_flag2false;

}

当单行编辑框获得了输入焦点后,系统自动发送消息

WM

-

SETFOCUS

给相应的对象,然后调用此消息映像函数将m_flag2设置为

TRUE。同理我们可以处理多行编辑框的

WM

-

SETFOCUS

消息,在消息处理函数OnEnKillfocusEdit2中加入代码

void

Cshi9_21DlgOnEnKillfocusEdit2

{

//

TODO

在此添加控件通知处理程序代码

m_flag1false;

m_flag2true;

}

“Copy”

按钮加代码,在消息处理函数OnBnClickedBtnCopy,加入如下代码

void

Cshi9_21DlgOnBnClickedBtnCopy

{

//

TODO

在此添加控件通知处理程序代码

ifm_flag1

m_edit1.Copy;

ifm_flag2

m_edit2.Copy;

}

“Cut”

按钮增加代码

在消息映像函数OnBnClickedBtnCut,加入下列代码

void

Cshi9_21DlgOnBnClickedBtnCut

{

//

TODO

在此添加控件通知处理程序代码

ifm_flag1

m_edit1.Cut;

ifm_flag2

m_edit2.Cut;

}

“Paste”

按钮增加代码

利用

在消息映像处理函数OnBnClickedBtnPaste,加入下列代码

void

Cshi9_21DlgOnBnClickedBtnPaste{

//

TODO

在此添加控件通知处理程序代码

ifm_flag1

m_edit1.Paste;

ifm_flag2

m_edit2.Paste;

}

此题要求动态地显示多行编辑框的状态,为此需要给

“MultiLine

Edit

Box”

编辑框的

EN

-

CHANGE

消息映像函数,每当

“MultiLine

Edit

Box”

编辑框的内容发生变化时,系统均发出此消息。加入下列代码

void

Cshi9_21DlgOnEnChangeEdit2

{

//

TODO

如果该控件是

RICHEDIT

控件,它将不

//

发送此通知,除非重写

CDialogOnInitDialog

//

函数并调用

CRichEditCtrl.SetEventMask,

//

同时将

ENM_CHANGE

标志“或”运算到掩码中。

//

TODO

在此添加控件通知处理程序代码

CString

strText;

//

TEXTMETRIC

tm;

strText.atL“d“,m_edit2.GetLineCount;

m_linenum.SetSel0,-1;

m_linenum.ReplaceSelstrText;

strText.atL“d“,m_edit2.GetWindowTextLengthW;

m_charnum.SetSel0,-1;

m_charnum.ReplaceSelstrText;

CPoint

care;

carem_edit2.GetCaretPos;

strText.atL“d“,m_edit2.GetFirstVisibleLine;

m_visline.SetSel0,-1;

m_visline.ReplaceSelstrText;

//CClientDC

hDCthis;

//GetTextMetricshDC,strText.atL“d“,care.y/14m_edit2.GetFirstVisibleLine;

m_curline.SetSel0,-1;

m_curline.ReplaceSelstrText;

}

首先

CWnd

类的成员函数

GetWindowText

得到多行编辑框的内容,存储在字符串对象

szAllText

中,调用字符串类的成员函数

GetLength

得到字符串的长度

nCharNum;调用

CEdit

成员函数

GetLineCount

得到编辑框中

的行数

nLineNum;

用函数

Line-

FromChar

得到光标所在行的标号

nCurLine,因为标号是从

0

开始的,所以标号加

1

即为行号;调用函数

GetFirstVisibleLine

得到编辑框可见的最上面一行的行号

nVisLine。然后输出即可。另外由于刚启动程序时,编辑框中无任何字符,所以状态编辑框中的内容均

0,这需要在对话框初始化函数

OnInitDialog

中完成,加入下列代码

BOOL

Cshi9_21DlgOnInitDialog

{

CDialogOnInitDialog;

//

将“关于...”菜单项添加到系统菜单中。

//

IDM_ABOUTBOX

必须在系统命令范围内。

ASSERTIDM_ABOUTBOX

ASSERTIDM_ABOUTBOX

AppendMenuMF_SEPARATOR;

pSysMenu-AppendMenuMF_STRING,IDM_ABOUTBOX,strAboutMenu;

}

}

SetIconm_hIcon,TRUE;//

设置大图标

SetIconm_hIcon,FALSE;//

设置小图标

//

TODO

在此添加额外的初始化代码

return

TRUE;

//

除非将焦点设置到控件,否则返回

TRUE

}

3.

测试数据、预期结果、测试结果

输入数据“shiyan”,点击“cut”和“paste”,结果为

输入“windows”,点击“copy”和“paste”,结果为

5、心得体会

这次实验对我来有一定的难度说,很多函数消息都感到很陌生,发现自己的理论水平一旦到动手编程的时候就觉得很困难,基础知识仍需巩固,刚开始做的时候觉得无从下手,先查了书本的例题,收集了很多参考资料,但是在照着步骤去做,也学到了很多编程知识,对标准控件和MFC的应用有了很大的了解。

  • 夏衍的魅力阅读答案

    夏衍的魅力阅读答案专题免费提供夏衍的魅力,夏衍的魅力ppt,夏衍的魅力写作背景,夏衍的魅力点击答案,夏衍的魅力原文,夏衍的魅力答案,夏衍的魅力赏析,野草夏衍阅读答案,夏衍的魅力主要内容,夏衍野草的写作背景,夏衍...

  • 黄盖写给曹操的信

    黄盖写给曹操的信专题免费提供黄盖给曹操的信,黄盖给曹操的一封信,曹操写给陶渊明的信,黄盖给曹操,曹操烧信,黄盖诈降曹操,给曹操的一封信,黄盖向曹操假投降,致曹操的一封信,曹操打黄盖,幻想曹操诸葛亮的信,曹操黄...

  • 会计演讲稿

    会计演讲稿专题免费提供财务会计演讲稿,竞聘会计演讲稿,会计竞岗演讲稿,竞聘财务会计演讲稿,会计竞争上岗演讲稿,会计竞聘上岗演讲稿,银行会计主管演讲稿,村会计竞选演讲稿,会计工作演讲稿,竞聘会计岗位演讲稿,我...

  • 本人求职意愿

    本人求职意愿专题免费提供本人求职意愿怎么写,本人求职意愿范文,就业推荐表求职意愿,本人求职意愿怎么填,求职意愿模板,毕业生本人求职意愿,求职意愿描述,师范生本人求职意愿,个人求职意愿怎么写,求职意愿,大学生...

  • 小小即兴演讲会

    小小即兴演讲会专题免费提供小小即兴演讲会ppt,招聘会即兴演讲,即兴演讲题目大全,即兴演讲万能稿,即兴演讲视频,基本功即兴演讲,即兴演讲题目与素材,即兴演讲技巧,三分钟即兴演讲题目,即兴演讲,英语即兴演讲题目,...

  • 题记式开头

    题记式开头专题免费提供题记式开头的文章,题记式作文开头,题记开头空格吗,作文开头题记,用题记开头的作文,题记开头,题记法作文开头,以题记开头的作文,题记式作文,写了题记要写开头吗,题记式作文范文,题记开头法,...

  • 看云识天气课后题

    看云识天气课后题专题免费提供看云识天气课后反思,看云识天气课后练习,看云识天气,看云识天气课后词语,看云识天气的谚语,看云识天气观课报告,看云识天气原文,看云识天气公开课,看云识天气ppt,看云识天气优质课,看...

  • 五柳先生对门

    五柳先生对门专题免费提供五柳先生传,五柳先生传作者,五柳先生传ppt,五柳先生传教学反思,五柳先生传翻译,积雪浮云端,五柳先生,田园乐,五柳先生传朗读,辋川集,五柳先生传教学设计,五柳先生传教案,五柳先生传阅读答...

  • 贝多芬命运交响曲听后感

    贝多芬命运交响曲听后感专题免费提供听贝多芬命运交响曲,贝多芬命运交响曲全,贝多芬命运交响曲曲,贝多芬命运交响曲,听贝多芬第九交响曲,贝多芬命运交响曲谱,贝多芬第九交响曲,贝多芬命运交响曲9,贝多芬第五交响曲...

  • 聚沙成塔的故事

    聚沙成塔的故事专题免费提供聚沙成塔的成语故事,聚沙成塔造句,聚沙成塔的意思,聚沙成塔第十季,聚沙成塔的下一句,聚沙成塔第十三季,聚沙成塔的近义词,积少成多 聚沙成塔,聚沙成塔,聚沙成塔第十二季,聚沙成塔集腋...




本文标题:Windows可视化编程visual c++实验二报告
本文地址:http://www.bagew.com/article/1120557.html
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向巴哥网投诉!

相关推荐