VC程序设计实验指导_第1页
VC程序设计实验指导_第2页
VC程序设计实验指导_第3页
VC程序设计实验指导_第4页
VC程序设计实验指导_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上VC+程序设计实验指导书李贵荣计算机技术实验中心前 言一、上机实验目的 上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解 Visual C+ 面向对象与可视化开发工具的基本功能和用法,掌握MFC的类框架结构,学会使用Visual C+ 编写Windows应用程序。二、实验基本内容 为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了4个必做实验。学生可以在课内机时先完成指导书中给出的程序,理解所学的知识,在此基础上再编写其他应用程序。指导书中的4个实验如下。 1基本Windows程序设计(2H,必做)。 2简单图形界面程序设计(

2、2H,必做)。3多文档程序设计(2H,必做)。4综合性程序设计(4H,必做)。三、实验任务与时间安排 Visual C+ 程序设计是一门实践性很强的课程,除了在课内安排的实验外,鼓励同学在课外用相关技术进行编程练习。Visual C+ 程序设计上机实验时间为10学时,与教学内容同时进行上机实验。10 个上机学时分为4个必做实验。目 录专心-专注-专业实验一 简单Windows程序设计【实验目的】1学会创建Visual C+ 6.0 Win32应用程序工程文件。2掌握Windows应用程序的基本结构。3理解Windows编程中的窗口、句柄、消息传递等概念及其作用。4理解Windows图形设备接口

3、的概念及了解常用Windows绘图函数。5学会在Visual C+ 6.0中编译、调试、发布应用程序。【实验性质】验证性实验(学时数:2H)【实验要求】1在Windows下启动Visual C+ 6.0,创建工程文件。2编写一个简单的 Windows应用程序,并在程序中创建句柄,学会使用句柄。3分析上面的程序,在程序中使用注释语句标识出Windows程序的基本构成部分,并在注释语句中注明各部分的作用。4在上面程序中添加消息处理函数,使用程序完成如下功能:(1)定义一只红色的画笔,绘制一个等边五边形;(2)用不同颜色的线条连接互不想念的两个点;(3)用不同颜色的画笔填充用上述方法所形成的图形中的

4、每一个区域。 【参考程序】#include <windows.h>#include <stdlib.h>#include <string.h>#include <math.h>#define Pi 3.long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);/消息处理函数声明.BOOL InitWindowsClass(HINSTANCE hInstance);/初始化窗口类声明BOOL InitWindows(HINSTANCE hInstance, int nC

5、mdShow);/初始化窗口声明.HWND hWndMain;int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)/主函数MSG Message;if(!InitWindowsClass(hInstance)/初始化窗口类.return FALSE;if(!InitWindows(hInstance,nCmdShow)/初始化窗口.return FALSE;while(GetMessage(&Message,0,0,0)TranslateMessag

6、e(&Message);/消息循环.DispatchMessage(&Message);return Message.wParam;long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)/消息处理函数.HDC hDC;/定义设备环境句柄.HBRUSH hBrush;/定义画刷句柄HPEN hPen;/定义画笔句柄PAINTSTRUCT PtStr;/定义包含绘图信息的结构体变量double dfRadious0=200.0,dfRadious1;/定义外部和内部正五边形外接圆半径.POINT lp

7、OuterPoints5,lpInnerPoints5;/定义外,内正五边形点结构数组.POINT lpTriangle3; /定义三角形点结构数组.dfRadious1=dfRadious0*sin(0.1*Pi)/sin(126.0/180*Pi);/根据外圆半径计算内园半径./计算内外正五边形的点坐标.for(int i=0;i<5;i+)lpOuterPointsi.x=(long)(dfRadious0*cos(i*72.0/180*Pi)+200;lpOuterPointsi.y=(long)(dfRadious0*sin(i*72.0/180*Pi)+200;lpInner

8、Pointsi.x=(long)(dfRadious1*cos(i*72.0/180*Pi+36.0/180*Pi)+200;lpInnerPointsi.y=(long)(dfRadious1*sin(i*72.0/180*Pi+36.0/180*Pi)+200;switch(iMessage)case WM_PAINT:/处理绘图消息.hDC=BeginPaint(hWnd,&PtStr);/得到设备环境句柄SetMapMode(hDC,MM_ANISOTROPIC);/设置映射模式.SetWindowOrgEx(hDC,-100,-100,NULL);/设置坐标原点.hPen=C

9、reatePen(PS_SOLID,1,RGB(255,0,0);/创新红色画笔.SelectObject(hDC,hPen);/将画笔选入.Polygon(hDC,lpOuterPoints,5);/画正五边形./填充正五边形的不同区域.for(i=0;i<5;i+)lpTriangle0=lpOuterPointsi%5;/生成图形中的三角形区域的坐标.lpTriangle1=lpInnerPointsi%5;lpTriangle2=lpOuterPoints(i+1)%5;/创新新画刷.hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30);Sele

10、ctObject(hDC,hBrush);/选入新画刷.Polygon(hDC,lpTriangle,3);/画三角形区域.lpTriangle2=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);/

11、选入画刷.Polygon(hDC,lpInnerPoints,5);/画中心的五边形./用不同种颜色的画笔来绘制五角星.MoveToEx(hDC,lpOuterPoints0.x,lpOuterPoints0.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);DeleteObjec

12、t(hPen);/删除画笔.DeleteObject(hBrush);/删除画刷.EndPaint(hWnd,&PtStr);/结束绘图.return 0;case WM_DESTROY:/处理关闭窗口信息.PostQuitMessage(0);/向应用程序发送WM_QUIT消息.return 0;default:return(DefWindowProc(hWnd,iMessage,wParam,lParam);BOOL InitWindows(HINSTANCE hInstance, int nCmdShow)/初始化HWND hWnd;/定义窗口句柄.hWnd=CreateWind

13、ow("Polygon",/窗口类名."五边形",/窗口实例标题.WS_OVERLAPPEDWINDOW,/窗口风格.带边框,标题栏,系统菜单和最大和最小按钮.CW_USEDEFAULT,/窗口左上角坐标.0,/窗口左上角坐标.CW_USEDEFAULT,/窗口宽度0,/窗口高度NULL,/无父窗口.NULL,/无主菜单.hInstance,/创建此窗口的应用程序的当前句柄.NULL);/指向一个传递给窗口的参数值从指针./不使用该值.if(!hWnd)/如果窗口创建失败,返回false.return FALSE;hWndMain=hWnd;/将窗口句柄

14、传递给全局变量.ShowWindow(hWnd,nCmdShow);/显示窗口.UpdateWindow(hWnd);/更新并绘制用户区.return TRUE;BOOL InitWindowsClass(HINSTANCE hInstance)/初始化窗口类.WNDCLASS WndClass;/定义窗口类.WndClass.cbClsExtra=0;/窗口类无扩展.WndClass.cbWndExtra=0;/窗口实例无扩展.WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH);/窗口背景为白色.WndClass.hCurs

15、or=LoadCursor(NULL,IDC_ARROW);/窗口采用箭头光标.WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);/窗口的最小化图标为缺省图标.WndClass.hInstance=hInstance;/当前实例句柄.WndClass.lpfnWndProc=WndProc;/窗口处理函数.WndClass.lpszClassName="Polygon"/窗口类名.WndClass.lpszMenuName=NULL;/无菜单WndClass.style=0;/窗口类型为缺省类型.return RegisterCla

16、ss(&WndClass);/返回注册窗口的值.实验二 简单界面设计【实验目的】使用MFC应用程序向导,生成Windows基本对话框。通过对Windows基本对话框的学习和使用,了解MFC的类库结构,掌握CDialog的基本组成,了解对话框程序的工作过程,学习使用常用的Windows控件,学会编写消息处理函数。【实验性质】验证性实验(学时数:2H)【实验要求】使用MFC应用程序向导编写一个基本对话框程序。 在程序综合运用静态文本框、编辑框、按钮控件,在程序练习使用文件对话框、颜色选择对话框、字体对话框、打印对话框等常用类。【实验内容】 编写一个简单的计算器程序,要求有两个操作数,实现加

17、、减、乘、除。参考界面如下图:/对话框定义(部分)/ CMy11_4Dlg dialogclass CMy11_4Dlg : public CDialog/ Constructionpublic:CMy11_4Dlg(CWnd* pParent = NULL);/ standard constructor/ Dialog Data/AFX_DATA(CMy11_4Dlg)enum IDD = IDD_MY11_4_DIALOG ;CEditm_Item1_Edit;CEditm_Item2_Edit;CStringm_sResult_Edit;/AFX_DATA/ ClassWizard ge

18、nerated virtual function overrides/AFX_VIRTUAL(CMy11_4Dlg)protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:HICON m_hIcon;/ Generated message map functions/AFX_MSG(CMy11_4Dlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID

19、, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnDevideButton();afx_msg void OnDifferenceButton();afx_msg void OnExitButton();afx_msg void OnMultipleButton();afx_msg void OnAddButton();/AFX_MSGDECLARE_MESSAGE_MAP();/对话框实现(部分)#include "stdafx.h"#inclu

20、de "11_4.h"#include "11_4Dlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ Class

21、Wizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)

22、/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMy11_4Dlg dialogCMy11_4Dlg:CMy11_4Dlg(CWnd* pParent /*=NULL

23、*/): CDialog(CMy11_4Dlg:IDD, pParent)/AFX_DATA_INIT(CMy11_4Dlg)m_sResult_Edit = _T("");/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CMy11_4Dlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExch

24、ange(pDX);/AFX_DATA_MAP(CMy11_4Dlg)DDX_Control(pDX, IDC_ITEM1_EDIT, m_Item1_Edit);DDX_Control(pDX, IDC_ITEM2_EDIT, m_Item2_Edit);DDX_Text(pDX, IDC_RESULT_EDIT, m_sResult_Edit);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMy11_4Dlg, CDialog)/AFX_MSG_MAP(CMy11_4Dlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICO

25、N()ON_BN_CLICKED(IDC_DEVIDE_BUTTON, OnDevideButton)ON_BN_CLICKED(IDC_DIFFERENCE_BUTTON, OnDifferenceButton)ON_BN_CLICKED(IDC_EXIT_BUTTON, OnExitButton)ON_BN_CLICKED(IDC_MULTIPLE_BUTTON, OnMultipleButton)ON_BN_CLICKED(IDC_ADD_BUTTON, OnAddButton)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMy11_4Dlg message handl

26、ersBOOL CMy11_4Dlg:OnInitDialog()CDialog:OnInitDialog();/ Add "About." menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)

27、CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the application's main window is

28、not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CMy11_4Dlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;d

29、lgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);void CMy11_4Dlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystem

30、Metrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.H

31、CURSOR CMy11_4Dlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CMy11_4Dlg:OnDifferenceButton() / TODO: Add your control notification handler code here/开始加入代码char cstrItem110,cstrItem210;/定义编辑框中的字符串对象.double dfItem1,dfItem2,dfResult;/定义编辑框中的数字.char cBuffer10;/定义存储转换结构的字符串.m_Item1_Edit.GetWindowText

32、(cstrItem1,10);/得到Item1编辑框中的字符串.m_Item2_Edit.GetWindowText(cstrItem2,10);/得到Item2编辑框中的字符串.dfItem1=atof(LPCTSTR)cstrItem1);/将Item1编辑框中的字符串转换为数字.dfItem2=atof(LPCTSTR)cstrItem2);/将Item2编辑框中的字符串转换为数字.dfResult=dfItem1-dfItem2;/求差_gcvt(dfResult,10,cBuffer);/将差转化为字符串.存储在cbuffer中.m_sResult_Edit=(LPCTSTR)cBu

33、ffer;/将结果字符串输出到Result编辑框中UpdateData(FALSE);/刷新屏幕./结束代码.void CMy11_4Dlg:OnAddButton() /单击Add按钮./开始加入代码.char cstrItem110,cstrItem210;/定义编辑框中的字符串对象.double dfItem1,dfItem2,dfResult;/定义编辑框中的数字.char cBuffer50;/定义存储转换结构的字符串.m_Item1_Edit.GetWindowText(cstrItem1,10);/得到Item1编辑框中的字符串.m_Item2_Edit.GetWindowTex

34、t(cstrItem2,10);/得到Item2编辑框中的字符串.dfItem1=atof(LPCTSTR)cstrItem1);/将Item1编辑框中的字符串转换为数字.dfItem2=atof(LPCTSTR)cstrItem2);/将Item2编辑框中的字符串转换为数字.dfResult=dfItem1+dfItem2;/求和_gcvt(dfResult,10,cBuffer);/将和转化为字符串.存储在cbuffer中.m_sResult_Edit=(LPCTSTR)cBuffer;/将结果字符串输出到Result编辑框中UpdateData(FALSE);/刷新屏幕./结束代码.vo

35、id CMy11_4Dlg:OnMultipleButton() /单击Multiple按钮./开始加入代码.char cstrItem110,cstrItem210;/定义编辑框中的字符串对象.double dfItem1,dfItem2,dfResult;/定义编辑框中的数字.char cBuffer10;/定义存储转换结构的字符串.m_Item1_Edit.GetWindowText(cstrItem1,10);/得到Item1编辑框中的字符串.m_Item2_Edit.GetWindowText(cstrItem2,10);/得到Item2编辑框中的字符串.dfItem1=atof(L

36、PCTSTR)cstrItem1);/将Item1编辑框中的字符串转换为数字.dfItem2=atof(LPCTSTR)cstrItem2);/将Item2编辑框中的字符串转换为数字.dfResult=dfItem1*dfItem2;/求积_gcvt(dfResult,10,cBuffer);/将积转化为字符串.存储在cbuffer中.m_sResult_Edit=(LPCTSTR)cBuffer;/将结果字符串输出到Result编辑框中UpdateData(FALSE);/刷新屏幕./结束代码.void CMy11_4Dlg:OnDevideButton() /单击Devide按钮./ 加入

37、代码.char cstrItem110,cstrItem210;/定义编辑框中的字符串对象.double dfItem1,dfItem2,dfResult;/定义编辑框中的数字.char cBuffer10;/定义存储转换结构的字符串.m_Item1_Edit.GetWindowText(cstrItem1,10);/得到Item1编辑框中的字符串.m_Item2_Edit.GetWindowText(cstrItem2,10);/得到Item2编辑框中的字符串.dfItem1=atof(LPCTSTR)cstrItem1);/将Item1编辑框中的字符串转换为数字.dfItem2=atof(

38、LPCTSTR)cstrItem2);/将Item2编辑框中的字符串转换为数字.dfResult=dfItem1/dfItem2;/求商_gcvt(dfResult,10,cBuffer);/将商转化为字符串.存储在cbuffer中.m_sResult_Edit=(LPCTSTR)cBuffer;/将结果字符串输出到Result编辑框中UpdateData(FALSE);/刷新屏幕./结束代码.void CMy11_4Dlg:OnExitButton() /单击Exit按钮./加入代码.OnOK();/退出.实验三 多文档程序设计【实验目的】了解Windows程序的文档、视图结构的基本概念,学

39、会使用AppWizard创建基于文档/视图结构的框架应用程序以及文档类、视图类和文档模板类的应用。【实验性质】验证性实验(学时数:2H)【实验要求】1掌握Microsoft MFC中支持的文档/视图结构的基本概念,学会通过应用程序向导生成单文档(SDI)和多文档应用程序(MDI)。2编写简单单文档界面应用程序。3编写简单多文档界面应用程序。【实验内容】(一)单文档界面程序设计创建一个应用程序,其界面的标题为MySdi。在应用程序的主窗口中显示一行文本“您好,单文档界面的例程!”,并始终出现在窗口的中央。在“编辑”菜单上有一个菜单项“改变显示文本”,单该项可以弹出一个对话框,通过这个对话框可以改

40、变主窗口中的显示文本。(1) 创建工程文件首先创建一个MFC AppWizard(exe)工程文件,并取名为MySdi。建立MySdi应用程序工程文件时选择Single Document(单文档)选项,其他的都是默认选项。(2) 添加资源为程序添加一个简单对话框CDlgInput,其中有一个文本输入控件IDC_EDIT1,关联的成员变量为m_input,类型为CString。操作过程如前面对话框实验。(3) 为CMysdiDoc类添加成员变量为CMysdiDoc类添加成员变量可以有两种方法。第一种方法是利用VC的可视化编程工具。在Workspace窗口的ClassView选项卡中展开Mysdi

41、 Classes,可以看到AppWizard为Mysdi程序生成的所有类。右击CMysdiDoc类,在弹出菜单中单击Add Member Variable选项,在Variable Type框中输入成员变量的类型CString,在Variable Declaration框中输入成员变量名m_str。由于希望其他类的对象可以访问该成员变量,因此访问类型设置为public。单击OK将该成员变量的定义添加到类的定义中。第二种方法是手动的在CMysdiDoc的定义(MysdiDoc.h)中添加,直接为其添加一个成员变量。public : CString m_str;(4) 文档变量初始化为了测试该程序,

42、我们在CMsdiDoc的OnNewDocument成员变量中为公有成员m_str赋以“您好,单文档界面的例程!”,方法是使用下面的代码替换OnNewDocument的实现代码中的“/TODO”注释。BOOL CMysdiDoc:OnNewDocument( )if(!CDocument:OnNewDocument( ) return FALSE;m_str = “您好,单文档界面的例程!”; return TRUE;(5) 视图的输出在MFC应用程序中,文档类是和视图类一起协作完成应用程序功能的。下面我们将为Mysdi程序的视图类CMysdiView类的OnDraw成员函数添加一些代码,以将文

43、档类的m_str成员变量的内容显示到视图的框架窗口中。void CMysdiView:OnDraw(CDC * pDC)CMysdiDoc * pDoc = GetDocument( );ASSERT VALID(pDoc);/TODO: add draw code for native data hereCRect rectClient;GetClientRect( rectClient); /获取当前客户区的指针CSize sizeClient = rectClient.Size(); /获取当前客户区的大小CString str = pDoc -> m_str; /从文件中读取数据

44、CSize sizeTextExtent = pDC -> GetTextExtent(str); /用新选定的字体绘制字符串pDC -> TextOut (sizeClient.cx-sizeTextExtent.cx)/2 , (sizeClient.cy-sizeTextExtent.cy)/2 , str);(6) 串行化(参见教材)(二)多文档界面程序设计 设计一个多文档应用程序,理解文档/视图结构模型中文档与视图的作用。(1)创建MDI项目文件创建步骤同(一),应用程序类型选项卡为:多文档。(2)通过ClassView向导创建第二个文档类CMyMdiDoc2,其基类为C

45、Document。(3)创建资源。打开资源文件 resource.h,在文件中加入下列代码:#define IDR_MYMDITYPE2 135这样就定义了第二个文档类的资源ID,以后定义的菜单、文档模板等资源均可以使用这个ID。文档模板的资源:资源模式参见教材相关内容,现在手工加入第二个资源模板字符串。用记事本或其它编辑器打开MyMdi.rc资源文件,找到下面的代码:IDR_MYMDITYPE "nMymdinMymdinMymdi 文件 (*.mmd)n.mmdnMymdi.DocumentnMymdi Document"这是第一个文档类的的资源字符串,在后面加入:ID

46、R_MYMDITYPE2 "nMymdi2nMymdi2nMymdi2 文件 (*.mm2)n.mm2nMymdi.DocumentnMymdi2 Document"这是第二个文档类的资源字符串。(4)菜单、对话框资源单击Workplace窗口中的Resource View选项卡,展开MyMdi resources | Menu,在“编辑”子菜单中添加一个新的菜单项“改变显示文本”,并将此菜单项的ID设置为ID_EDIT_CHANGETEXT。 使用对话框实验中的方法,生成对话框类CDlgInput,并添加Edit Box控件及其相关联的成员变量m_input,类型为CSt

47、ring。(5)代码编辑创建文档模板类,因为本应用程序支持多种文档,所以在应用程序的InitInstance()函数中,需要定义新的文档模板的对象,打开MyMdi.cpp文件,查找如下代码:BOOL CMymdiApp:InitInstance()AfxEnableControlContainer();.CMultiDocTemplate* pDocTemplate;pDocTemplate = new CMultiDocTemplate(IDR_MYMDITYPE,RUNTIME_CLASS(CMymdiDoc),RUNTIME_CLASS(CChildFrame), / custom MD

48、I child frameRUNTIME_CLASS(CMymdiView);AddDocTemplate(pDocTemplate);.上面是第一个文档的模板,下面在它的后面添加第二个文档的模板,代码如下:CMultiDocTemplate* pDocTemplate;pDocTemplate = new CMultiDocTemplate(IDR_MYMDITYPE,RUNTIME_CLASS(CMymdiDoc),RUNTIME_CLASS(CChildFrame), / custom MDI child frameRUNTIME_CLASS(CMymdiView);AddDocTemplate(pDocTemplate);CMultiDocTemplate* pDocTemplate2;pDocTemplate2 = new CMultiDocTemplate(IDR_MYMDITYPE2,RUNTIME_CLASS(CMymdiDoc2), /MDI派生文档类的CRuntimeClass对象的指针RUNTIME_CLASS(CChildFrame), / MDI派生子框架类的CRuntimeClass对象的指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论