VC实验报告3.docx

上传人:b****8 文档编号:10063468 上传时间:2023-05-23 格式:DOCX 页数:15 大小:50.45KB
下载 相关 举报
VC实验报告3.docx_第1页
第1页 / 共15页
VC实验报告3.docx_第2页
第2页 / 共15页
VC实验报告3.docx_第3页
第3页 / 共15页
VC实验报告3.docx_第4页
第4页 / 共15页
VC实验报告3.docx_第5页
第5页 / 共15页
VC实验报告3.docx_第6页
第6页 / 共15页
VC实验报告3.docx_第7页
第7页 / 共15页
VC实验报告3.docx_第8页
第8页 / 共15页
VC实验报告3.docx_第9页
第9页 / 共15页
VC实验报告3.docx_第10页
第10页 / 共15页
VC实验报告3.docx_第11页
第11页 / 共15页
VC实验报告3.docx_第12页
第12页 / 共15页
VC实验报告3.docx_第13页
第13页 / 共15页
VC实验报告3.docx_第14页
第14页 / 共15页
VC实验报告3.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VC实验报告3.docx

《VC实验报告3.docx》由会员分享,可在线阅读,更多相关《VC实验报告3.docx(15页珍藏版)》请在冰点文库上搜索。

VC实验报告3.docx

VC实验报告3

华北电力大学实验报告

院/系:

电子与通信工程系课程名称:

vc++程序设计日期:

专业

通信工程

学号

201203010132

班级

1201

姓名

郑明威

实验名称

基于对话框的编程

成绩

评定

教师

签名

实验

环境

Windows2000,VisualC++6.0

实验目的

及实验要求

目的:

1、了解AppWizard生成的对话框风格应用程序框架

2、掌握利用VC的MFC类库设计面向对象应用程序的过程

3、学习对话框类的设计方法

4、掌握对话框编程的DDV/DDX机制

5、掌握基本控件和通用对话框的程序设计方法

要求:

编写一个基于对话框的应用程序,实现简单的计算器功能。

1. 每个MFC应用程序都包含如下6个部分。

 

从CWinApp派生一个新类作为该应用程序的程序类,这个类应该重载InitInstance()函数。

 将该应用程序类声明为全局变量,CWinApp的构造函数将自动调用InitInstance()函数。

 从CFrameWnd(或CMDIFrameWnd或CMINIFrameWnd)派生一个类作为屏幕上的主窗口。

 创建该窗口的InitInstacne()函数。

 创建该窗口的构造函数。

 创建该窗口的析构函数。

 

2.对话框是Windows应用程序中一种常用的资源,其主要功能是输出信息和接收用户的输入数据。

控件是嵌入在对话框中或其它父窗口中的一个特殊的小窗口,它用于完成不同的输入、输出功能。

  对话框与控件关系密切,在每个对话框上一般都有一些控件,对话框依靠这些控件与用户进行信息的交互。

 

在MFC中,对话框的功能被封装在CDialog类中,而CDialog类是CWnd类的派生类。

作为窗口,对话框和其它窗口一样具有窗口的一切功能。

  

3.基于对话框的应用程序 

可以直接利用MFC AppWizard向导创建一个基于对话框的应用程序,这种程序运行后首先出现一个对话框。

在向导的第一步选择Dialog Based项。

此时,应用程序向导将出现与单文档和多文档程序向导不同的操作步骤,因为对话框应用程序一般不包含文档,故不支持数据库和复合文档。

 

按照对话框应用程序向导提示的步骤进行操作就得到一个对话框应用程序项目,出现对话框编辑器和控件工具栏浮动窗口,它们采用的是一种所见即所得的可视化工作方式。

利用向导创建应用程序的框架后,程序员可根据程序具体功能要求添加代码。

要求:

编写一个基于对话框的应用程序,实现简单的计算器功能。

1、设计服务器端对话框界面

2、添加控件及关联的成员变量,修改各控件属性

3、添加CEditCalc类

4、添加相应函数

BOOLCCalcDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//Add"About..."menuitemtosystemmenu.

//IDM_ABOUTBOXmustbeinthesystemcommandrange.

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

CStringstrAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

}

voidCCalcDlg:

:

OnButton1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

BtnClicked("1");

}

 

voidCCalcDlg:

:

OnButton2()

{

BtnClicked("2");

}

voidCCalcDlg:

:

OnButton3()

{

BtnClicked("3");

}

voidCCalcDlg:

:

OnButton4()

{

BtnClicked("4");

}

voidCCalcDlg:

:

OnButton5()

{

BtnClicked("5");

}

voidCCalcDlg:

:

OnButton6()

{

BtnClicked("6");

}

voidCCalcDlg:

:

OnButton7()

{

BtnClicked("7");

}

voidCCalcDlg:

:

OnButton8()

{

BtnClicked("8");

}

voidCCalcDlg:

:

OnButton9()

{

BtnClicked("9");

}

voidCCalcDlg:

:

OnButton0()

{

BtnClicked("0");

}

voidCCalcDlg:

:

OnButtonDot()

{InitInputValue();

CStringtemp;

temp=m_strValue;

if(temp.Find('.')<0)

{m_strValue+=".";

this->UpdateData(FALSE);

m_strOpValue[m_op_nums]=m_strValue;

}}

voidCCalcDlg:

:

OnButtonNagative()

{

InitInputValue();

if(m_strValue=="0")return;

if(m_strValue[0]!

='-')

{

m_strValue="-"+m_strValue;

}

else

{

m_strValue=m_strValue.Right(m_strValue.GetLength()-1);

}

this->UpdateData(FALSE);

m_strOpValue[m_op_nums]=m_strValue;

}

boolCCalcDlg:

:

stringvalid(CString&strValue)

{

boolbReturn=false;

boolbSign=false;

intnDot,nLen;

CStringstrTemp;

strTemp=strValue;

nLen=strTemp.GetLength();

if(nLen>0)

{

if(strTemp[0]=='-')

{

bSign=true;

strTemp=strTemp.Right(nLen-1);

nLen-=1;

}

CStringstrPlus,strNag;

nDot=strTemp.Find('.',0);

if(nDot>=0)

{

strPlus=strTemp.Left(nDot);

strNag=strTemp.Right(nLen-nDot-1);

}

else

{

strPlus=strTemp;

strNag="";

}

strPlus.TrimLeft('0');

if(strPlus.IsEmpty())strPlus+='0';

strValue=strPlus;

if(!

strNag.IsEmpty())strValue+='.'+strNag;

}

else

{

strValue="0";

}

if(bSign)strValue='-'+strValue;

returnbReturn;

}

voidCCalcDlg:

:

OnButtonPlus()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(m_strOpValue[1].IsEmpty())

{

m_op=1;

m_strOpValue[0]=m_strValue;

m_op_nums=1;

}

else

{

Calc();

m_op_nums=1;

m_strOpValue[0]=m_strValue;

m_strOpValue[1]="";

m_op=1;

}

m_inputnew=true;

}

voidCCalcDlg:

:

OnButtonSub()

{

if(m_strOpValue[1].IsEmpty())

{

m_op=2;

m_strOpValue[0]=m_strValue;

m_op_nums=1;

}

else

{Calc();

m_op_nums=1;

m_strOpValue[0]=m_strValue;

m_strOpValue[1]="";

m_op=2;

}

m_inputnew=true;

}

voidCCalcDlg:

:

OnButtonMul()

{

if(m_strOpValue[1].IsEmpty())

{

m_op=3;

m_strOpValue[0]=m_strValue;

m_op_nums=1;

}

else

{

Calc();

m_op_nums=1;

m_strOpValue[0]=m_strValue;

m_strOpValue[1]="";

m_op=3;

}

m_inputnew=true;

}

voidCCalcDlg:

:

OnButtonDiv()

{

if(m_strOpValue[1].IsEmpty())

{

m_op=4;

m_strOpValue[0]=m_strValue;

m_op_nums=1;

}

else

{

Calc();

m_op_nums=1;

m_strOpValue[0]=m_strValue;

m_strOpValue[1]="";

m_op=4;

}

m_inputnew=true;

}

voidCCalcDlg:

:

OnButtonBack()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CStringtemp;

temp=m_strValue;

temp=temp.Left(temp.GetLength()-1);

stringvalid(temp);

m_strValue=temp;

this->UpdateData(FALSE);

}

voidCCalcDlg:

:

OnButtonCancel()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

Reset();

}

voidCCalcDlg:

:

OnButtonEqual()

{

if(m_op!

=0)

{

if(m_strOpValue[1].IsEmpty())

{

m_strOpValue[1]=m_strValue;

}

Calc();

m_op_nums=1;

m_op=0;

m_strOpValue[0]=m_strValue;

m_strOpValue[1]="";

m_inputnew=true;

}

}

voidCCalcDlg:

:

BtnClicked(CStringstrKey)

{

InitInputValue();

CStringtemp;

temp=m_strValue+strKey;

stringvalid(temp);

m_strValue=temp;

this->UpdateData(FALSE);

m_strOpValue[m_op_nums]=m_strValue;

}

voidCCalcDlg:

:

Reset()

{

m_op=0;

m_strValue="0";

m_op_nums=0;

m_strOpValue[0]="";

m_strOpValue[1]="";

this->m_inputnew=true;

this->UpdateData(FALSE);

}

voidCCalcDlg:

:

InitInputValue()

{

if(this->m_inputnew)

{

m_strValue="0";

m_inputnew=false;

}

}

boolCCalcDlg:

:

Calc()

{

boolbReturn=true;

doubledValue,dValue1,dValue2;

switch(m_op)

{

case0:

bReturn=false;

break;

case1:

dValue1=m_strOpValue[0].IsEmpty()?

0.:

atof(m_strOpValue[0]);

dValue2=m_strOpValue[1].IsEmpty()?

0.:

atof(m_strOpValue[1]);

dValue=dValue1+dValue2;

m_strValue.Format("%f",dValue);

m_strValue.TrimRight('0');

m_strValue.TrimRight('.');

this->UpdateData(FALSE);

break;

case2:

dValue1=m_strOpValue[0].IsEmpty()?

0.:

atof(m_strOpValue[0]);

dValue2=m_strOpValue[1].IsEmpty()?

0.:

atof(m_strOpValue[1]);

dValue=dValue1-dValue2;

m_strValue.Format("%f",dValue);

m_strValue.TrimRight('0');

m_strValue.TrimRight('.');

this->UpdateData(FALSE);

break;

case3:

dValue1=m_strOpValue[0].IsEmpty()?

0.:

atof(m_strOpValue[0]);

dValue2=m_strOpValue[1].IsEmpty()?

0.:

atof(m_strOpValue[1]);

dValue=dValue1*dValue2;

m_strValue.Format("%f",dValue);

m_strValue.TrimRight('0');

m_strValue.TrimRight('.');

this->UpdateData(FALSE);

break;

case4:

dValue1=m_strOpValue[0].IsEmpty()?

0.:

atof(m_strOpValue[0]);

dValue2=m_strOpValue[1].IsEmpty()?

0.:

atof(m_strOpValue[1]);

if(dValue2==0.)

{

bReturn=false;

break;

}

dValue=dValue1/dValue2;

m_strValue.Format("%f",dValue);

m_strValue.TrimRight('0');

m_strValue.TrimRight('.');

this->UpdateData(FALSE);

break;

}

returnbReturn;

}

1+15=16

 

感谢老师的悉心指导。

通过实验,我了解了AppWizard生成的对话框风格应用程序框架,掌握了利用VC的MFC类库设计面向对象应用程序的过程,也学到对话框类的设计方法,

掌握对话框编程的DDV/DDX机制,同时掌握基本控件和通用对话框的程序设计方法对知识有了更深入的理解,让我获益匪浅。

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

当前位置:首页 > 自然科学 > 物理

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

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