VC程序设计实验指导.docx

上传人:b****3 文档编号:26645495 上传时间:2023-06-21 格式:DOCX 页数:15 大小:25.64KB
下载 相关 举报
VC程序设计实验指导.docx_第1页
第1页 / 共15页
VC程序设计实验指导.docx_第2页
第2页 / 共15页
VC程序设计实验指导.docx_第3页
第3页 / 共15页
VC程序设计实验指导.docx_第4页
第4页 / 共15页
VC程序设计实验指导.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

VC程序设计实验指导.docx

《VC程序设计实验指导.docx》由会员分享,可在线阅读,更多相关《VC程序设计实验指导.docx(15页珍藏版)》请在冰豆网上搜索。

VC程序设计实验指导.docx

VC程序设计实验指导

 

VC++程序设计

 

李贵荣

 

计算机技术实验中心

 

前言

一、上机实验目的

上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解VisualC++面向对象与可视化开发工具的基本功能和用法,掌握MFC的类框架结构,学会使用VisualC++编写Windows应用程序。

二、实验基本内容

为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了4个必做实验。

学生可以在课内机时先完成指导书中给出的程序,理解所学的知识,在此基础上再编写其他应用程序。

指导书中的4个实验如下。

1.基本Windows程序设计(2H,必做)。

2.简单图形界面程序设计(2H,必做)。

3.多文档程序设计(2H,必做)。

4.综合性程序设计(4H,必做)。

三、实验任务与时间安排

《VisualC++程序设计》是一门实践性很强的课程,除了在课内安排的实验外,鼓励同学在课外用相关技术进行编程练习。

《VisualC++程序设计》上机实验时间为10学时,与教学内容同时进行上机实验。

10个上机学时分为4个必做实验。

 

实验一简单Windows程序设计

【实验目的】

1.学会创建VisualC++Win32应用程序工程文件。

2.掌握Windows应用程序的基本结构。

3.理解Windows编程中的窗口、句柄、消息传递等概念及其作用。

4.理解Windows图形设备接口的概念及了解常用Windows绘图函数。

5.学会在VisualC++中编译、调试、发布应用程序。

【实验性质】

验证性实验(学时数:

2H)

【实验要求】

1.在Windows下启动VisualC++,创建工程文件。

2.编写一个简单的Windows应用程序,并在程序中创建句柄,学会使用句柄。

3.分析上面的程序,在程序中使用注释语句标识出Windows程序的基本构成部分,并在注释语句中注明各部分的作用。

4.在上面程序中添加消息处理函数,使用程序完成如下功能:

(1)定义一只红色的画笔,绘制一个等边五边形;

(2)用不同颜色的线条连接互不想念的两个点;

(3)用不同颜色的画笔填充用上述方法所形成的图形中的每一个区域。

【参考程序】

#include<>

#include<>

#include<>

#include<>

#definePi

longWINAPIWndProc(HWNDhWnd,

UINTiMessage,

UINTwParam,

LONGlParam);

BOOLInitWindowsClass(HINSTANCEhInstance);HWNDhWndMain;

intWINAPIWinMain(HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPSTRlpCmdLine,

intnCmdShow)returnFALSE;

if(!

InitWindows(hInstance,nCmdShow))returnFALSE;

while(GetMessage(&Message,0,0,0))

{

TranslateMessage(&Message);DispatchMessage(&Message);

}

return;

}

longWINAPIWndProc(HWNDhWnd,

UINTiMessage,

UINTwParam,

LONGlParam){

HDChDC;HBRUSHhBrush;POINTlpOuterPoints[5],lpInnerPoints[5];POINTlpTriangle[3];dfRadious1=dfRadious0*sin*Pi)/sin180*Pi);for(inti=0;i<5;i++)

{

lpOuterPoints[i].x=(long)(dfRadious0*cos(i*180*Pi))+200;

lpOuterPoints[i].y=(long)(dfRadious0*sin(i*180*Pi))+200;

lpInnerPoints[i].x=(long)(dfRadious1*cos(i*180*Pi+180*Pi))+200;

lpInnerPoints[i].y=(long)(dfRadious1*sin(i*180*Pi+180*Pi))+200;

}

switch(iMessage)

{

caseWM_PAINT:

hDC=BeginPaint(hWnd,&PtStr);SetWindowOrgEx(hDC,-100,-100,NULL);

hPen=CreatePen(PS_SOLID,1,RGB(255,0,0));SelectObject(hDC,hPen);Polygon(hDC,lpOuterPoints,5);for(i=0;i<5;i++)

{

lpTriangle[0]=lpOuterPoints[i%5];lpTriangle[1]=lpInnerPoints[i%5];

lpTriangle[2]=lpOuterPoints[(i+1)%5];

hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30));

SelectObject(hDC,hBrush);Polygon(hDC,lpTriangle,3);lpTriangle[2]=lpInnerPoints[(i+4)%5];hBrush=CreateSolidBrush(RGB(i*40,i*30,i*20));SelectObject(hDC,hBrush);Polygon(hDC,lpTriangle,3);}

hBrush=CreateSolidBrush(RGB(255,255,255));SelectObject(hDC,hBrush);Polygon(hDC,lpInnerPoints,5);

MoveToEx(hDC,lpOuterPoints[0].x,lpOuterPoints[0].y,NULL);

for(i=1;i<=5;i++)

{

hPen=CreatePen(PS_SOLID,1,RGB(0,i*51,0));

SelectObject(hDC,hPen);

LineTo(hDC,lpOuterPoints[(i+2)%5].x,lpOuterPoints[(i+2)%5].y);

}

hPen=(HPEN)(GetStockObject(PS_NULL));

DeleteObject(hPen);DeleteObject(hBrush);EndPaint(hWnd,&PtStr);return0;

caseWM_DESTROY:

PostQuitMessage(0);return0;

default:

return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

}

BOOLInitWindows(HINSTANCEhInstance,intnCmdShow)hWnd=CreateWindow("Polygon","五边形",WS_OVERLAPPEDWINDOW,边框,标题栏,系统菜单和最大和最小按钮.

CW_USEDEFAULT,0,CW_USEDEFAULT,NULL,hInstance,NULL);if(!

hWnd)returnFALSE;

hWndMain=hWnd;ShowWindow(hWnd,nCmdShow);UpdateWindow(hWnd);returnTRUE;

}

BOOLInitWindowsClass(HINSTANCEhInstance){

WNDCLASSWndClass;=0;=0;=(HBRUSH)(GetStockObject(WHITE_BRUSH));=LoadCursor(NULL,IDC_ARROW);=LoadIcon(NULL,IDI_APPLICATION);=hInstance;=WndProc;="Polygon";=NULL;returnRegisterClass(&WndClass);}

 

实验二简单界面设计

【实验目的】

使用MFC应用程序向导,生成Windows基本对话框。

通过对Windows基本对话框的学习和使用,了解MFC的类库结构,掌握CDialog的基本组成,了解对话框程序的工作过程,学习使用常用的Windows控件,学会编写消息处理函数。

【实验性质】

验证性实验(学时数:

2H)

【实验要求】

使用MFC应用程序向导编写一个基本对话框程序。

在程序综合运用静态文本框、编辑框、按钮控件,在程序练习使用文件对话框、颜色选择对话框、字体对话框、打印对话框等常用类。

【实验内容】

编写一个简单的计算器程序,要求有两个操作数,实现加、减、乘、除。

参考界面如下图:

."menuitemtosystemmenu.

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

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

CStringstrAboutMenu;

(IDS_ABOUTBOX);

if(!

())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

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

}

}

Theframeworkdoesthisautomatically

HCURSORCMy11_4Dlg:

:

OnQueryDragIcon()

{

return(HCURSOR)m_hIcon;

}

 

voidCMy11_4Dlg:

:

OnDifferenceButton()

{

doubledfItem1,dfItem2,dfResult;charcBuffer[10];

(cstrItem1,10);(cstrItem2,10);dfItem1=atof((LPCTSTR)cstrItem1);dfItem2=atof((LPCTSTR)cstrItem2);dfResult=dfItem1-dfItem2;储在cbuffer中.

m_sResult_Edit=(LPCTSTR)cBuffer;}

voidCMy11_4Dlg:

:

OnAddButton(){

charcstrItem1[10],cstrItem2[10];doubledfItem1,dfItem2,dfResult;charcBuffer[50];

(cstrItem1,10);(cstrItem2,10);dfItem1=atof((LPCTSTR)cstrItem1);dfItem2=atof((LPCTSTR)cstrItem2);dfResult=dfItem1+dfItem2;储在cbuffer中.

m_sResult_Edit=(LPCTSTR)cBuffer;}

voidCMy11_4Dlg:

:

OnMultipleButton(){

charcstrItem1[10],cstrItem2[10];doubledfItem1,dfItem2,dfResult;charcBuffer[10];

(cstrItem1,10);(cstrItem2,10);dfItem1=atof((LPCTSTR)cstrItem1);dfItem2=atof((LPCTSTR)cstrItem2);dfResult=dfItem1*dfItem2;储在cbuffer中.

m_sResult_Edit=(LPCTSTR)cBuffer;

}

voidCMy11_4Dlg:

:

OnDevideButton(){

charcstrItem1[10],cstrItem2[10];doubledfItem1,dfItem2,dfResult;charcBuffer[10];(cstrItem1,10);(cstrItem2,10);dfItem1=atof((LPCTSTR)cstrItem1);dfItem2=atof((LPCTSTR)cstrItem2);dfResult=dfItem1/dfItem2;储在cbuffer中.

m_sResult_Edit=(LPCTSTR)cBuffer;}

voidCMy11_4Dlg:

:

OnExitButton(){

OnOK();}

实验三多文档程序设计

【实验目的】

了解Windows程序的文档、视图结构的基本概念,学会使用AppWizard创建基于文档/视图结构的框架应用程序以及文档类、视图类和文档模板类的应用。

【实验性质】

验证性实验(学时数:

2H)

【实验要求】

1.掌握MicrosoftMFC中支持的文档/视图结构的基本概念,学会通过应用程序向导生成单文档(SDI)和多文档应用程序(MDI)。

2.编写简单单文档界面应用程序。

3.编写简单多文档界面应用程序。

【实验内容】

(一)单文档界面程序设计

创建一个应用程序,其界面的标题为MySdi。

在应用程序的主窗口中显示一行文本“您好,单文档界面的例程!

”,并始终出现在窗口的中央。

在“编辑”菜单上有一个菜单项“改变显示文本”,单该项可以弹出一个对话框,通过这个对话框可以改变主窗口中的显示文本。

(1)创建工程文件

首先创建一个MFCAppWizard(exe)工程文件,并取名为MySdi。

建立MySdi应用程序工程文件时选择SingleDocument(单文档)选项,其他的都是默认选项。

(2)添加资源

为程序添加一个简单对话框CDlgInput,其中有一个文本输入控件IDC_EDIT1,关联的成员变量为m_input,类型为CString。

操作过程如前面对话框实验。

(3)为CMysdiDoc类添加成员变量

为CMysdiDoc类添加成员变量可以有两种方法。

第一种方法是利用VC的可视化编程工具。

在Workspace窗口的ClassView选项卡中展开MysdiClasses,可以看到AppWizard为Mysdi程序生成的所有类。

右击CMysdiDoc类,在弹出菜单中单击AddMemberVariable选项,在VariableType框中输入成员变量的类型CString,在VariableDeclaration框中输入成员变量名m_str。

由于希望其他类的对象可以访问该成员变量,因此访问类型设置为public。

单击OK将该成员变量的定义添加到类的定义中。

第二种方法是手动的在CMysdiDoc的定义()中添加,直接为其添加一个成员变量。

public:

CStringm_str;

(4)文档变量初始化

为了测试该程序,我们在CMsdiDoc的OnNewDocument成员变量中为公有成员m_str赋以“您好,单文档界面的例程!

”,方法是使用下面的代码替换OnNewDocument的实现代码中的“md)\\\nMymdiDocument"

这是第一个文档类的的资源字符串,在后面加入:

IDR_MYMDITYPE2"\nMymdi2\nMymdi2\nMymdi2文件(*.mm2)\\\nMymdi2Document"

这是第二个文档类的资源字符串。

(4)菜单、对话框资源

单击Workplace窗口中的ResourceView选项卡,展开MyMdiresources|Menu,在“编辑”子菜单中添加一个新的菜单项“改变显示文本”,并将此菜单项的ID设置为ID_EDIT_CHANGETEXT。

使用对话框实验中的方法,生成对话框类CDlgInput,并添加EditBox控件及其相关联的成员变量m_input,类型为CString。

(5)代码编辑

创建文档模板类,因为本应用程序支持多种文档,所以在应用程序的InitInstance()函数中,需要定义新的文档模板的对象,打开文件,查找如下代码:

BOOLCMymdiApp:

:

InitInstance()

{

AfxEnableControlContainer();

……..

CMultiDocTemplate*pDocTemplate;

pDocTemplate=newCMultiDocTemplate(

IDR_MYMDITYPE,

RUNTIME_CLASS(CMymdiDoc),

RUNTIME_CLASS(CChildFrame),

上面是第一个文档的模板,下面在它的后面添加第二个文档的模板,代码如下:

CMultiDocTemplate*pDocTemplate;

pDocTemplate=newCMultiDocTemplate(

IDR_MYMDITYPE,

RUNTIME_CLASS(CMymdiDoc),

RUNTIME_CLASS(CChildFrame),//customMDIchildframe

RUNTIME_CLASS(CMymdiView));

AddDocTemplate(pDocTemplate);

CMultiDocTemplate*pDocTemplate2;

pDocTemplate2=newCMultiDocTemplate(

IDR_MYMDITYPE2,

RUNTIME_CLASS(CMymdiDoc2),//MDI派生文档类的CRuntimeClass对象的指针

RUNTIME_CLASS(CChildFrame),//MDI派生子框架类的CRuntimeClass对象的指针

RUNTIME_CLASS(CMymdiView2));//创建文档模板的对象

AddDocTemplate(pDocTemplate2);//将新模板添加到应用程序的文档模板列表中

为了使CMyMdiApp类能够访问第二个文档/视图,需要在中加入它们的头文件。

#include""

#include""

完善CMyMdiDoc2类,部分代码如下:

BOOLCMymdiDoc2:

:

OnNewDocument()

{

if(!

CDocument:

:

OnNewDocument())

returnFALSE;

m_str="您好,多文档界面的例程!

";

returnTRUE;

}

voidCMymdiDoc2:

:

Serialize(CArchive&ar)

{

if())

{

ar<

}

else

{

ar>>m_str;//读取文档内容

}

}

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

//CMymdiDoc2commands

voidCMymdiDoc2:

:

OnEditChangetext()

{

//TODO:

Addyourcommandhandlercodehere

CDlgInputinputDlg;//建立一个CinputDlg的对象inputDlg

if(()==IDOK)//使inputDlg成为一个模式对话框

{

m_str=;//获取输入的字符串

UpdateAllViews(NULL);//更新视图

}

}

视图输出,需要在CMyMdiView2:

OnDraw(CDC*pDC)中添加下列代码:

voidCMymdiView2:

:

OnDraw(CDC*pDC)

{

CMymdiDoc2*pDoc=(CMymdiDoc2*)GetDocument();

ASSERT_VALID(pDoc);

//TODO:

Addyourspecializedcodehereand/orcallthebaseclass

CRectrectClient;//获取当前客户区的大小

GetClientRect(rectClient);

CSizesizeClient=();

CStringstr=pDoc->m_str;//从文件中读取数据

CSizesizeTextExtent=pDC->GetTextExtent(str);//用新选定的字体绘制字符串

pDC->TextOut(str);

}

 

实验四综合设计实验

【实验目的】

了解VisualC++开发环境的常用功能,使用VisualC++编写对话框/文档视图结构程序,综合运用C++的面向对象程序设计方法,了解MFC类库结构和掌握常用MFC类,学会运用VisualC++较熟练开发MFC应用程序。

【实验性质】

综合性实验(学时数:

4H)

【实验要求】

1.了解MFC类库结构,熟悉常用的MFC类。

2.根据个人特点和兴趣,使用VisualC++设计一个功能较完善的Windows应用程序。

3.内容可以选择下面的内容之一:

(1)多媒体应用程序

(2)数据库应用程序

(3)网络应用程序

4.人机界面要求:

主界面的菜单项/按钮不少于5个,其功能均要求实现;对话框不少于3个。

5.程序的文档要求:

要求程序的说明和注释尽可能详尽,通过注释能够反映出程序的思路和执行流程。

【实验内容】

本次实验为设计型实验,实验内容由学生根据自身

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

当前位置:首页 > 人文社科 > 法律资料

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

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