实验10基于单文档程序设计.docx

上传人:b****4 文档编号:11532392 上传时间:2023-03-18 格式:DOCX 页数:26 大小:1.50MB
下载 相关 举报
实验10基于单文档程序设计.docx_第1页
第1页 / 共26页
实验10基于单文档程序设计.docx_第2页
第2页 / 共26页
实验10基于单文档程序设计.docx_第3页
第3页 / 共26页
实验10基于单文档程序设计.docx_第4页
第4页 / 共26页
实验10基于单文档程序设计.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

实验10基于单文档程序设计.docx

《实验10基于单文档程序设计.docx》由会员分享,可在线阅读,更多相关《实验10基于单文档程序设计.docx(26页珍藏版)》请在冰豆网上搜索。

实验10基于单文档程序设计.docx

实验10基于单文档程序设计

实验10基于单文档程序设计

实验目的:

掌握单文档程序的基本架构,掌握菜单项的添加,成员函数的定义

实验内容:

建立单文档程序,要求如下,启动界面如下

1建立如下启动界面,保持2秒:

2建立菜单:

计算器,调用计算器程序

3建立如下界面,

点击添加人员信息,则弹出如下对话框

输入信息后,在编辑框中显示

实验步骤:

(基于MFC应用程序实现。

1、在VC中创建基于视图的程序框架

通过菜单“File/New”,打开新建对话框。

选择“MFCAppWizard[exe]”,在“Projectname”中输入适当的程序名称,在“Location”中设置好保存目录。

在”Step1”中选“Singledocument”

向导完成后的详细表单

2添加展示界面

复制“192.168.2.10\实验室文件\面向对象程序设计(龚志鹏)\实验10资源”内文件到本人项目中。

在自己的项目中添加“SplashWnd.h”与“SplashWnd.cpp”文件。

2.1添加“SplashWnd.cpp”文件

2.2添加“SplashWnd.h”文件

2.3插入图象资源作为软件启动画面

通过菜单“Insert/Resouce…”,插入图象作为资源。

导入图片“Import”

确定

更改资源ID为“IDB_SPLASH1”

2.4修改“SplashWnd.cpp”文件

修改“SplashWnd.cpp”中对头文件的引用,使之符合自已的项目。

例:

“SplashWnd.cpp”文件内容:

//SplashWnd.cpp:

implementationfile

//

#include"stdafx.h"

#include"test10.h"//修改,使之与本项目一致

#include"SplashWnd.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

////////////////////////////////////////////////////////////////////////////

//SplashScreenclass

BOOLCSplashWnd:

:

c_bShowSplashWnd;

CSplashWnd*CSplashWnd:

:

c_pSplashWnd;

CSplashWnd:

:

CSplashWnd()

{

}

CSplashWnd:

:

~CSplashWnd()

{

//Clearthestaticwindowpointer.

ASSERT(c_pSplashWnd==this);

c_pSplashWnd=NULL;

}

BEGIN_MESSAGE_MAP(CSplashWnd,CWnd)

//{{AFX_MSG_MAP(CSplashWnd)

ON_WM_CREATE()

ON_WM_PAINT()

ON_WM_TIMER()

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

voidCSplashWnd:

:

EnableSplashScreen(BOOLbEnable/*=TRUE*/)

{

c_bShowSplashWnd=bEnable;

}

voidCSplashWnd:

:

ShowSplashScreen(CWnd*pParentWnd/*=NULL*/)

{

//if(!

c_bShowSplashWnd||c_pSplashWnd!

=NULL)

//return;

//Allocateanewsplashscreen,andcreatethewindow.

c_pSplashWnd=newCSplashWnd;

if(!

c_pSplashWnd->Create(pParentWnd))

deletec_pSplashWnd;

else

c_pSplashWnd->UpdateWindow();

}

BOOLCSplashWnd:

:

PreTranslateAppMessage(MSG*pMsg)

{

if(c_pSplashWnd==NULL)

returnFALSE;

//Ifwegetakeyboardormousemessage,hidethesplashscreen.

if(pMsg->message==WM_KEYDOWN||

pMsg->message==WM_SYSKEYDOWN||

pMsg->message==WM_LBUTTONDOWN||

pMsg->message==WM_RBUTTONDOWN||

pMsg->message==WM_MBUTTONDOWN||

pMsg->message==WM_NCLBUTTONDOWN||

pMsg->message==WM_NCRBUTTONDOWN||

pMsg->message==WM_NCMBUTTONDOWN)

{

c_pSplashWnd->HideSplashScreen();

returnTRUE;//messagehandledhere

}

returnFALSE;//messagenothandled

}

BOOLCSplashWnd:

:

Create(CWnd*pParentWnd/*=NULL*/)

{

if(!

m_bitmap.LoadBitmap(IDB_SPLASH1))//通过资源号“IDB_SPLASH1”加载图像文件

returnFALSE;

BITMAPbm;

m_bitmap.GetBitmap(&bm);

returnCreateEx(0,

AfxRegisterWndClass(0,AfxGetApp()->LoadStandardCursor(IDC_ARROW)),

NULL,WS_POPUP|WS_VISIBLE,0,0,bm.bmWidth,bm.bmHeight,pParentWnd->GetSafeHwnd(),NULL);

}

voidCSplashWnd:

:

HideSplashScreen()

{

//Destroythewindow,andupdatethemainframe.

DestroyWindow();

AfxGetMainWnd()->UpdateWindow();

}

voidCSplashWnd:

:

PostNcDestroy()

{

//FreetheC++class.

deletethis;

}

intCSplashWnd:

:

OnCreate(LPCREATESTRUCTlpCreateStruct)

{

if(CWnd:

:

OnCreate(lpCreateStruct)==-1)

return-1;

//Centerthewindow.

CenterWindow();

//Setatimertodestroythesplashscreen.

SetTimer(1,2000,NULL);//定时器1

return0;

}

voidCSplashWnd:

:

OnPaint()

{

CPaintDCdc(this);

CDCdcImage;

if(!

dcImage.CreateCompatibleDC(&dc))

return;

BITMAPbm;

m_bitmap.GetBitmap(&bm);

//Painttheimage.

CBitmap*pOldBitmap=dcImage.SelectObject(&m_bitmap);

dc.BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY);

dcImage.SelectObject(pOldBitmap);

}

voidCSplashWnd:

:

OnTimer(UINTnIDEvent)

{

//Destroythesplashscreenwindow.

HideSplashScreen();

}

BOOLCSplashWnd:

:

PreTranslateMessage(MSG*pMsg)

{

//TODO:

Addyourspecializedcodehereand/orcallthebaseclass

if(c_pSplashWnd==NULL)

returnFALSE;

//Ifwegetakeyboardormousemessage,hidethesplashscreen.

if(pMsg->message==WM_KEYDOWN||

pMsg->message==WM_SYSKEYDOWN||

pMsg->message==WM_LBUTTONDOWN||

pMsg->message==WM_RBUTTONDOWN||

pMsg->message==WM_MBUTTONDOWN||

pMsg->message==WM_NCLBUTTONDOWN||

pMsg->message==WM_NCRBUTTONDOWN||

pMsg->message==WM_NCMBUTTONDOWN)

{

c_pSplashWnd->HideSplashScreen();

returnTRUE;//messagehandledhere

}

returnCWnd:

:

PreTranslateMessage(pMsg);

}

2.5引用“CSplashWnd”类,为程序显示展示画面

在“MainFrm.cpp”中引用“CSplashWnd”类

修改“MainFrm.cpp”文件中的“CMainFrame:

:

OnCreate”代码,添加代码

CSplashWnd:

:

ShowSplashScreen(this);//显示展示画面

如下图

3添加新视图

使用菜单“Insert/NewForm”,打开“NewForm”对话框

编程者自己输入合适的名称,本例子输入视图名称”myview1”,

建立如下视图

在视图上添加标签、命令按钮、文本框等控件,修改为如下界面

添加控件变量

添加按钮响应代码

voidmyview1:

:

OnButton1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

qhinputqhin1;//参数输入对话框类

CStringc1;

qhin1.DoModal();//调用参数输入对话框

c1.Format("欢迎:

%s,%d岁.\r\n",Cname1,nYear1);

m_ed1+=c1;

UpdateData(false);

}

为“myview1”类添加全局变量“Cname1”、“nYear1”声明

将"myview1"视设置为本项目视图

修改"*App"类的"InitInstance()"方法,使之如下图所示

修改"myview1"为本人项目视图名称

修改"CMainFrame"类的"PreCreateWindow"方法,使之如下图所示

添加代码如下

4添加参数输入对话框

参照实验9,新建对话框,并为此对话框建立类“qhinput”,界面修改为如下图所示

添加控件变量

添加按钮响应代码

voidqhinput:

:

OnOK()

{

//TODO:

Addextravalidationhere

UpdateData(true);

Cname1=m_var1;

nYear1=m_var2;

CDialog:

:

OnOK();//关闭对话框

}

为“qhinput”类添加全局变量“Cname1”、“nYear1”声明

5添加全局变量“Cname1”、“nYear1”

CStringCname1;

intnYear1;

变量定义如下图

6添加菜单

打开菜单资源

修改,添加“计算器”菜单

添加消息

调试时需要将实验9的相关EXE文件及INI文件复制到本项目中,发布运行时需要将实验9的相关EXE文件及INI文件复制到与本项目EXE文件一个目录中。

添加代码如下,”WinExec”函数用来执行外部EXE文件,在本例中是执行“dgtest.exe”,此处应修改为与你实验9的EXE文件名一致。

7、编译运行程序

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

当前位置:首页 > 总结汇报 > 学习总结

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

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