实验12.docx

上传人:b****7 文档编号:10909321 上传时间:2023-02-23 格式:DOCX 页数:21 大小:186.09KB
下载 相关 举报
实验12.docx_第1页
第1页 / 共21页
实验12.docx_第2页
第2页 / 共21页
实验12.docx_第3页
第3页 / 共21页
实验12.docx_第4页
第4页 / 共21页
实验12.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

实验12.docx

《实验12.docx》由会员分享,可在线阅读,更多相关《实验12.docx(21页珍藏版)》请在冰豆网上搜索。

实验12.docx

实验12

实验12 按钮控件、静态控件、编辑框和旋转按钮控件

目的要求

1.熟悉基于对话框程序设计的步骤。

2.熟悉对话框编辑器的使用。

3.掌握按钮控件、静态控件的创建和代码的添加方法。

4.熟悉编辑框控件的创建方式。

实验1按钮控件和静态控件

实验内容

使用应用程序向导创建一个基于对话框的应用程序ButtonTest,界面如图12.1所示,界面上有两组不同的复选框信息,一组单选框信息,提供给用户选择,当用户作出选择后,单击【获取结果】按钮,能在右边的编辑框区域显示出选中的信息。

图12.1程序运行结果

 

实验步骤

1.启动VisualC++6.0,利用MFC向导建立一个基于对话框的应用程序:

ButtonTest。

2.利用对话框资源编辑器,按图12.1建立程序界面。

在控件工具条上依次将静态组框控件、单选按钮控件、复选按钮控件、编辑框控件拖入对话框界面上合适的位置,原界面上默认按钮IDCANCEL标题改为“取消”,利用Properties属性对话框将IDOK按钮的标题改为“获取结果”,ID号改为IDC_BUTTONSHOW,设置如图12.1所示控件的属性如表12-1。

 

表12-1 ButtonTest控件属性

控件

ID

标题

属性

静态组框

默认

年龄

默认

静态组框

默认

运动

默认

静态组框

默认

食品

默认

单选按钮

IDC_RADIO1

<20

Group,其它默认

单选按钮

IDC_RADIO2

20-30

默认

单选按钮

IDC_RADIO3

30-40

默认

单选按钮

IDC_RADIO4

>40

默认

复选按钮

IDC_CHECK1

跑步

Group,其它默认

复选按钮

IDC_CHECK2

体操

默认

复选按钮

IDC_CHECK3

游泳

默认

复选按钮

IDC_CHECK4

滑冰

默认

复选按钮

IDC_CHECK5

牛奶

Group,其它默认

复选按钮

IDC_CHECK6

鸡蛋

默认

复选按钮

IDC_CHECK7

面包

默认

复选按钮

IDC_CHECK8

水果

默认

复选按钮

IDC_CHECK9

饮料

默认

编辑框

IDC_EDITSHOW

默认

按钮

IDC_BUTTONSHOW

获取结果

默认

 

3.按组合键Ctrl+W打开ClassWizard类向导对话框,为控件添加成员变量,如图12.2所示。

添加控件变量如表12-2所示。

 

图12.2ClassWizard类向导对话框

 

表12-2控件及其关联变量

控件ID号

变量类型

变量名

取值范围

IDC_CHECK1

BOOL

m_A1

——

IDC_CHECK2

BOOL

m_A2

——

IDC_CHECK3

BOOL

m_A3

——

IDC_CHECK4

BOOL

m_A4

——

IDC_CHECK5

BOOL

m_B1

——

IDC_CHECK6

BOOL

m_B2

——

IDC_CHECK7

BOOL

m_B3

——

IDC_CHECK8

BOOL

m_B4

——

IDC_CHECK9

BOOL

m_B5

——

IDC_EDITSHOW

CString

m_result

——

 

4.双击对话框模板界面上每一个复选按钮,或按组合键Ctrl+W,打开类向导页面添加每个复选按钮的消息响应函数:

如图12.3所示。

图12.3ClassWizard类向导对话框

 

5.添加的消息响应函数代码如下:

voidCButtonTestDlg:

:

OnCheck1()

{

if(m_A1)

m_A1=false;

elsem_A1=true;

}

voidCButtonTestDlg:

:

OnCheck2()

{

if(m_A2)

m_A2=false;

elsem_A2=true;

}

voidCButtonTestDlg:

:

OnCheck3()

{

if(m_A3)

m_A3=false;

elsem_A3=true;

}

voidCButtonTestDlg:

:

OnCheck4()

{

if(m_A4)

m_A4=false;

elsem_A4=true;

}

voidCButtonTestDlg:

:

OnCheck5()

{

if(m_B1)

m_B1=false;

elsem_B1=true;

}

voidCButtonTestDlg:

:

OnCheck6()

{

if(m_B2)

m_B2=false;

elsem_B2=true;

}

voidCButtonTestDlg:

:

OnCheck7()

{

if(m_B3)

m_B3=false;

elsem_B3=true;

}

voidCButtonTestDlg:

:

OnCheck8()

{

if(m_B4)

m_B4=false;

elsem_B4=true;

}

voidCButtonTestDlg:

:

OnCheck9()

{

if(m_B5)

m_B5=false;

elsem_B5=true;

}

说明:

复选按键的相关变量如m_A取逻辑值true或false代表选中与否的标志。

6.将项目工作区窗口切换到ClassView页面,双击CButtonTestDlg类下的OnInitDialog()函数,添加代码如下:

BOOLCButtonTestDlg:

:

OnInitDialog()

{

CheckRadioButton(IDC_RADIO1,IDC_RADIO4,IDC_RADIO1);//设置第1个为选中

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

7.进入ClassWizard页面,在ClassName列表框中选择CButtonTestDlg,在ObjectIDs列表中选择IDC_BUTTONSHOW,在Messages列表中选择BN_CLICKED单击消息。

添加【获取结果】的消息响应函数,添加代码如下:

voidCButtonTestDlg:

:

OnButtonshow()

{

CStringstrCtrl;

m_result="你的年龄:

";

UINTnID=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4);

GetDlgItemText(nID,strCtrl);

m_result+=strCtrl+",爱好的运动";

if(m_A1)m_result+="跑步";

if(m_A2)m_result+="体操";

if(m_A3)m_result+="游泳";

if(m_A4)m_result+="滑冰";

m_result+=",爱好的食品";

if(m_B1)m_result+="牛奶";

if(m_B2)m_result+="鸡蛋";

if(m_B3)m_result+="面包";

if(m_B4)m_result+="水果";

if(m_B5)m_result+="饮料";

UpdateData(FALSE);

}

8.程序运行结果如图12.1所示。

写出实验总结及实验报告。

实验2编辑框和旋转按钮控件

实验内容

创建一个基于对话框的应用程序CountTest,如图12.4所示,页面上编辑框用于输入学生的姓名和三门课的成绩,当用户点击【计算平均分】按钮,平均分会显示在相应的编辑框中;点击【计算总分】按钮,总分也显示在相应编辑框中。

图12.4程序运行结果

 

实验步骤

1.启动VisualC++6.0,利用应用程序向导建立一个基于对话框的应用程序CountTest。

2.打开对话框编辑器,添加编辑框和按钮控件,设计如图12.4所示的界面,调整控件的布局。

各控件属性的设置如表12-3所示。

 

3.设置显示总分和平均分的编辑框的属性如图12.5所示。

 

设置编辑框的属性为only-Read,确保在此编辑中只能获取程序内部计算出来的值,而无法被外界更改。

图12.5编辑框的属性

 

表12-3 CountTest控件属性

控件

ID

标题

静态文本

默认

姓名:

静态文本

默认

VC程序设计

静态文本

默认

英语

静态文本

默认

XML

静态文本

默认

平均分:

静态文本

默认

总分:

编辑框

IDC_NAME

编辑框

IDC_SCORE1

编辑框

IDC_SCORE2

编辑框

IDC_SCORE3

编辑框

IDC_AVERAGE

编辑框

IDC_SUM

旋转按钮

IDC_SPIN1

旋转按钮

IDC_SPIN2

旋转按钮

IDC_SPIN3

按钮

IDC_BUTTONAVE

按钮

IDC_BUTTONSUM

 

4.设置旋转按钮属性Autobuddy、Right如图12.6所示。

图12.6旋转按钮属性

 

5.按组合键Ctrl+W,打开ClassWizard类向导对话框,选中MemberVariables页面,依次为编辑框关联变量,如图12.7所示。

添加后的成员变量见表12-4所示。

图12.7ClassWizard类向导对话框

 

表12-4 控件及其关联变量

控件ID

类型

变量名

取值范围

IDC_SCORE1

float

m_s1

0.0~100.0

IDC_SCORE2

float

m_s2

0.0~100.0

IDC_SCORE3

float

m_s3

0.0~100.0

IDC_AVERAGE

float

m_ave

IDC_SUM

float

m_sum

IDC_SPIN1

CSpinButtonCtrl

m_spin1

IDC_SPIN2

CSpinButtonCtrl

m_spin1

IDC_SPIN3

CSpinButtonCtrl

m_spin1

 

6.将项目工作区窗口切换到ClassView页面,双击CCountTestDlg类下的OnInitDialog()函数,添加代码如下:

BOOLCCountTestDlg:

:

OnInitDialog()

{

m_spin1.SetRange(0,100);//设置旋转按钮范围

m_spin2.SetRange(0,100);

m_spin3.SetRange(0,100);

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

7.按组合键Ctrl+W,打开类向导对话框,在MessageMaps页面中分别为IDC_SPIN1、IDC_SPIN2、IDC_SPIN3添加UDN_DELTAPOS消息映射函数,并分别添加如下代码:

voidCCountTestDlg:

:

OnDeltaposSpin1(NMHDR*pNMHDR,LRESULT*pResult)

{

NM_UPDOWN*pNMUpDown=(NM_UPDOWN*)pNMHDR;

UpdateData();

m_s1+=(float)pNMUpDown->iDelta*0.5f;

UpdateData(FALSE);

*pResult=0;

}

voidCCountTestDlg:

:

OnDeltaposSpin2(NMHDR*pNMHDR,LRESULT*pResult)

{

NM_UPDOWN*pNMUpDown=(NM_UPDOWN*)pNMHDR;

UpdateData();

m_s2+=(float)pNMUpDown->iDelta*0.5f;

UpdateData(FALSE);

*pResult=0;

}

voidCCountTestDlg:

:

OnDeltaposSpin3(NMHDR*pNMHDR,LRESULT*pResult)

{

NM_UPDOWN*pNMUpDown=(NM_UPDOWN*)pNMHDR;

UpdateData();

m_s3+=(float)pNMUpDown->iDelta*0.5f;

UpdateData(FALSE);

*pResult=0;

}

8.为程序添加消息响应函数

按组合键Ctrl+W,打开类向导对话框,在MessageMaps页面中为两个按钮IDC_BUTTONAVE和IDC_BUTTONSUM添加单击BN_CLICKED的消息响应函数,如图12.8所示。

 

图12.8消息响应函数对话框

 

9.添加函数代码

在类向导页面中点击【EditCode】按钮,进入源程序页面,在光标所停的地方添加代码如下:

voidCCountTestDlg:

:

OnButtonave()

{

UpdateData();

m_ave=(m_s1+m_s2+m_s3)/3;//计算平均分

UpdateData(FALSE);

}

voidCCountTestDlg:

:

OnButtonsum()

{

UpdateData();

m_sum=m_s1+m_s2+m_s3;//计算总分

UpdateData(FALSE);

}

(10)编译运行程序,即可得到结果。

写出实验总结及实验报告。

实验3 编辑框和按钮控件

实验内容

利用MFC创建一个基于对话框的应用程序ComputerTest,程序运行结果如图12.9所示的计算器,计算器界面上各个按钮代表不同的计算数字和运算符,编辑框用来显示计算结果。

图12.9程序运行结果

 

实验步骤

1.启动VisualC++6.0,利用MFC向导创建一个基于对话框的应用程序ComputerTest。

2.将对话框模板上默认的两个按钮删除,利用控件工具栏增加如图12.9所示的各个按钮控件和编辑框控件。

设置控件属性表12-5所示。

3.打开ClassWizard类向导页面,选择MemberVariables标签页面,为编辑框控件IDC_EDIT1分别添加字符串类型CString和编辑框类型CEdit的变量:

m_result和m_edit,如图12.10所示。

添加的成员变量如表12-6。

表12-5ComputerTest控件属性

控件

ID

标题属性

编辑框

IDC_EDIT1

——Centered

按钮

IDC_BUTTON1

1默认

按钮

IDC_BUTTON2

2默认

按钮

IDC_BUTTON3

3默认

按钮

IDC_BUTTON4

4默认

按钮

IDC_BUTTON5

5默认

按钮

IDC_BUTTON6

6默认

按钮

IDC_BUTTON7

7默认

按钮

IDC_BUTTON9

9默认

按钮

IDC_BUTTON0

0默认

按钮

IDC_CE

CE默认

按钮

IDC_RESULT

=默认

按钮

IDC_ADD

+默认

按钮

IDC_DIFFERENCE

-默认

按钮

IDC_MULTIPLE

×默认

按钮

IDC_DEVIDE

÷默认

表12-6控件及其关联变量

控件ID号

变量类型

变量名

取值范围

IDC_EDIT1

CString

m_result

IDC_EDIT1

CEdit

m_edit

 

图12.10ClassWizard类向导对话框

 

4.双击数字1按钮控件,或打开类向导中MessageMaps页面,添加该数字按钮IDC_BUTTON1的单击BN_CLICKED消息函数,并添加如下代码:

voidCComputerTestDlg:

:

OnButton1()

{

charlast[10];

m_edit.GetWindowText(last,10);//获取编辑框中已输入的文本

chars[2]="1";

m_result=strcat(last,s);//将先后输入的文本拼接成一个字符串

UpdateData(FALSE);

}

用同样的方法为其他九个数字按钮添加单击的消息,并添加相应的代码,只需将每个消息函数体中chars[]=“1”;设置为相应的数字“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“0”即可。

5.按组合键Ctrl+W,打开类向导对话框,在MessageMaps页面中为【CE】复位归零按钮添加单击BN_CLICKED的消息响应函数,并添加如下代码:

voidCComputerTestDlg:

:

OnCe()

{

m_edit.SetSel(0,-1);//将编辑框中内容全部选中

m_edit.ReplaceSel("");//将选中的内容替换为空

}

6.将项目工作区窗口切换到ClassView页面,选中CComputerTestDlg类单击鼠标右键选择AddMemberVariable,为对话框类添加Public型成员变量如下:

doubledata1,data2,result;//用来代表运算数和结果

intflag;//代表运算类型

图12.11ClassWizard类向导对话框

7.按组合键Ctrl+W,打开类向导对话框,在MessageMaps页面中分别为加、减、乘、除运算符按钮添加单击BN_CLICKED的消息响应函数如图12.11所示,并添加如下代码:

 

 

“+”运算符:

voidCComputerTestDlg:

:

OnAdd()

{

charlast[10];

m_edit.GetWindowText(last,10);//获取编辑框中输入的内容

data1=atof((LPCTSTR)last);//将编辑框中的字符串内容转化为数值型内容

m_result="";//将编辑框清空,以便于输入显示另一个计算数

UpdateData(FALSE);

flag=1;//标志值置1代表加运算

}

“-”运算符:

voidCComputerTestDlg:

:

OnDifference()

{

charlast[10];

m_edit.GetWindowText(last,10);//获取编辑框中输入的内容

data1=atof((LPCTSTR)last);//将编辑框中的字符串内容转化为数值型内容

m_result="";//将编辑框清空,以便于输入显示一个计算数

UpdateData(FALSE);

flag=2;//标志值置2代表减运算

}

“×”运算符:

voidCComputerTestDlg:

:

OnMultiple()

{

charlast[10];

m_edit.GetWindowText(last,10);//获取编辑框中输入的内容

data1=atof((LPCTSTR)last);//将编辑框中的字符串内容转化为数值型内容

m_result="";//将编辑框清空,以便于输入显示一个计算数

UpdateData(FALSE);

flag=3;//标志值置3代表乘运算

}

“÷”运算符:

voidCComputerTestDlg:

:

OnDevide()

{

charlast[10];

m_edit.GetWindowText(last,10);//获取编辑框中输入的内容

data1=atof((LPCTSTR)last);//将编辑框中的字符串内容转化为数值型内容

m_result="";//将编辑框清空,以便于输入显示一个计算数

UpdateData(FALSE);

flag=4;//标志值置4代表除运算

}

8.按组合键Ctrl+W,打开类向导对话框,在MessageMaps页面中为“=”按钮添加单击BN_CLICKED的消息响应函数,并添加如下代码:

voidCComputerTestDlg:

:

OnResult()

{

chars[20];

UpdateData();

data2=atof((LPCTSTR)m_result);

if(flag==1)

result=data1+data2;//执行加运算

if(flag==2)

result=data1-data2;//执行减运算

if(flag==3)

result=data1*data2;//执行乘运算

if(flag==4)

result=data1/data2;//执行除运算

_gcvt(result,10,s);//将计算结果result转换为字符串类型

m_result=(LPCTSTR)s;//将字符串S中内容转化为编辑框变量所对应CString类型

UpdateData(FALSE);

}

9.编译运行程序,结果如图12.9所示,按算术运算规则可得出相应的结果。

 写出实验总结及实验报告。

 

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

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1