收藏 分销(赏)

C++课程设计MFC省公共课一等奖全国赛课获奖课件.pptx

上传人:w****g 文档编号:3167182 上传时间:2024-06-23 格式:PPTX 页数:148 大小:12.53MB
下载 相关 举报
C++课程设计MFC省公共课一等奖全国赛课获奖课件.pptx_第1页
第1页 / 共148页
C++课程设计MFC省公共课一等奖全国赛课获奖课件.pptx_第2页
第2页 / 共148页
C++课程设计MFC省公共课一等奖全国赛课获奖课件.pptx_第3页
第3页 / 共148页
C++课程设计MFC省公共课一等奖全国赛课获奖课件.pptx_第4页
第4页 / 共148页
C++课程设计MFC省公共课一等奖全国赛课获奖课件.pptx_第5页
第5页 / 共148页
点击查看更多>>
资源描述

1、C+课程设计课程设计内容及要求内容及要求1第1页主要内容主要内容1.1.课程设计基本要求课程设计基本要求2.2.Windows Windows 编程基础编程基础3.3.什么是什么是C+MFCC+MFC4.4.什么是什么是MFCMFC编程编程5.5.MFCMFC应用程序开发流程应用程序开发流程6.单文档【ClassView】面板7.7.登录对话框与单文档视图联接登录对话框与单文档视图联接8.8.单文档中菜单项与对话框联接单文档中菜单项与对话框联接9.9.实例介绍实例介绍2第2页一、课程设计基本要求一、课程设计基本要求自学自学MFC(2MFC(2课时课时)知识扩充知识扩充C+C+:了解并掌握:了解

2、并掌握MFCMFC程序结构、消息映射机制、程序结构、消息映射机制、MFCMFC类库类库中惯用类(对话框、各种惯用控件)。中惯用类(对话框、各种惯用控件)。软件开发基本知识软件开发基本知识结合设计任务清楚软件开发基本流程、各个阶段目标和主要工结合设计任务清楚软件开发基本流程、各个阶段目标和主要工作。作。上机调试程序(上机调试程序(3030课时)课时)其它(其它(1414课时)课时)程序调试基本方法和论文撰写要求(程序调试基本方法和论文撰写要求(2 2课时)课时)掌握调试程序方法与技巧。掌握调试程序方法与技巧。清楚论文组织结构、格式编排等相关知识清楚论文组织结构、格式编排等相关知识学生资料查阅与自

3、主学习(学生资料查阅与自主学习(2 2课时)课时)代码编写(代码编写(1010课时)课时)3第3页二、二、Windows 编程基础编程基础Windows Windows 编程编程就是基于就是基于Windows Windows 应用程序。应用程序。2 2种主要种主要WindowsWindows应用程序应用程序基于基于对话框对话框应用程序应用程序基于基于文档文档/视图视图结构应用程序结构应用程序主要特点主要特点含有标准图形用户界面含有标准图形用户界面含有与硬件无关特征含有与硬件无关特征采取采取“消息传递,事件驱动消息传递,事件驱动”运行机制,即依据运行机制,即依据WindowsWindows发发送

4、消息来处理用户输入送消息来处理用户输入编写编写WindowsWindows应用程序主要方法(应用程序主要方法(2 2种)种)使用使用WindowsWindows提供应用程序提供应用程序接口(接口(APIAPI)函数)函数使用使用MicrosoftMicrosoft提供微软提供微软基础类基础类(MFC)(MFC)4第4页三、什么是三、什么是C+MFCMFC(Microsoft Foundation Class LibraryMFC(Microsoft Foundation Class Library,基础类库,基础类库)是微软提供用来编写是微软提供用来编写WindowsWindows应用程序应用

5、程序C+C+类库类库;封装了封装了APIAPI(WindowsWindows接口函数)接口函数),是是Win APIWin API与与C+C+结合。结合。MFCMFC大约有大约有200200多个类,封装了多个类,封装了WindowsWindows大部分编程对象以及与大部分编程对象以及与它们相关操作。即它由几百个执行文件和源代码文件组成。它们相关操作。即它由几百个执行文件和源代码文件组成。注意注意C+C+和和VC+VC+区分区分C+C+是是一个程序设计语言一个程序设计语言,是一个大家都认可软件编制通用规范,是一个大家都认可软件编制通用规范,即即C+C+是一套语法规则名字,类似汉语,英语。是一套语

6、法规则名字,类似汉语,英语。VC+VC+是一个软件是一个软件IDEIDE(编译、编辑、调试编译、编辑、调试 )集成开发环境)集成开发环境 MFC MFC是一个非外挂式是一个非外挂式软件包软件包,类库类库,MFC,MFC类是微软为类是微软为VC+VC+专配。专配。5第5页四、什么是四、什么是MFC编程编程MFCMFC编程编程指就是使用指就是使用VC+VC+进行开发,而且是在使用进行开发,而且是在使用VC+VC+提供提供各种向导情况下各种向导情况下MFCMFC编程。编程。在在VC+VC+中能够创建中能够创建3 3类类经典经典WindowsWindows应用程序应用程序基于对话框应用程序基于对话框应

7、用程序单文档界面(单文档界面(SDISDI)应用程序)应用程序多文档界面(多文档界面(MDIMDI)应用程序)应用程序文档文档/视图视图u文档对象:文档对象:u用来保留数据。用来保留数据。u视图对象:视图对象:u用来显示和编辑数用来显示和编辑数据。据。6第6页五、五、MFC应用程序开发流程应用程序开发流程应用程序编程基本步骤:应用程序编程基本步骤:(1 1)依据应用程序特征在)依据应用程序特征在MFC AppWizardexeMFC AppWizardexe应用程应用程序中序中选择适当应用程序框架选择适当应用程序框架。(2 2)利用)利用资源编辑器编辑资源资源编辑器编辑资源,如菜单等。,如菜单

8、等。(3 3)利用类向导()利用类向导(ClassWizardClassWizard)或手工)或手工添加类添加类、组员组员变量、组员函数变量、组员函数申明。申明。(4 4)编写详细)编写详细组员函数代码组员函数代码。(5 5)编译、链接程序)编译、链接程序检验程序中是否存在语法错误。检验程序中是否存在语法错误。(6 6)调试应用程序。)调试应用程序。7第7页六、单文档【ClassView】面板CAboutDlg(CAboutDlg(关于对话框类关于对话框类)管理关于对话框。管理关于对话框。CFrameWndCFrameWnd(框架窗口类)框架窗口类)CWxling_27AppCWxling_2

9、7App(应用程序类)(应用程序类)用来处理消息。用来处理消息。CWxling_27Doc CWxling_27Doc(文档类)(文档类)MFCMFC中数据是存放在类文档中。中数据是存放在类文档中。文档类负责管理和维护数据本身。文档类负责管理和维护数据本身。CWxling_27ViewCWxling_27View(视图类)(视图类)结果显示是在视图类中。结果显示是在视图类中。视图类负责处理用户鼠标和键盘操作。视图类负责处理用户鼠标和键盘操作。8第8页七、登录对话框与单文档视图联接七、登录对话框与单文档视图联接1.1.新建单文档工程:新建单文档工程:TEXTTEXT(注意此名由设计者自己任取);

10、(注意此名由设计者自己任取);2.2.在在ResourceViewResourceView,单击单击Insert DialogInsert Dialog,插入一对话框,插入一对话框IDD_DIALOG1IDD_DIALOG1(默认(默认IDID号);号);3.3.右键选中新建对话框,利用类向导建立一个新类右键选中新建对话框,利用类向导建立一个新类Create a new classCreate a new class,名,名称为:称为:C Cdlg_logindlg_login ;4.4.在在MainFrm.cppMainFrm.cpp文件前面,语句文件前面,语句#include“MainFr

11、m.h”#include“MainFrm.h”后面后面添加新类头文添加新类头文件:件:#include dlg_login.h#include dlg_login.h 5.5.在在FileViewFileView中点击中点击source filessource files,双击,双击MainFrm.cppMainFrm.cpp。找到:。找到:CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct),这是窗体框架创建函数。在该函数后面(在这是窗体框架创建

12、函数。在该函数后面(在return 0;return 0;前面)加入语句(注意大小写):前面)加入语句(注意大小写):Cdlg_login dlg;Cdlg_login dlg;/定义一个登录对话框对象定义一个登录对话框对象dlgdlgdlg.DoModal();dlg.DoModal();/让对话框对象以有模式形式显示出来让对话框对象以有模式形式显示出来6.6.此时对话框与单文档联接完成。此时对话框与单文档联接完成。7.7.下载下载“格式工厂格式工厂3.011”3.011”将自己照片转换成将自己照片转换成BMPBMP格式,经过插入格式,经过插入BitmapBitmap命命令,将照片引入至资源

13、中,并添加至对话框中。令,将照片引入至资源中,并添加至对话框中。9第9页七续、登录对话框退出按钮代码七续、登录对话框退出按钮代码/确定按钮确定按钮void CDlg_login:OnOK()void CDlg_login:OnOK()/TODO:Add extra validation/TODO:Add extra validation hereherethis-UpdateData(true);this-UpdateData(true);if(this-m_name=wxl&if(this-m_name=wxl&this-m_paw=1234)this-m_paw=1234)CDialog:

14、OnOK();CDialog:OnOK();elseelse MessageBox(MessageBox(登录有误登录有误););ExitProcess(0);/ExitProcess(0);/退出退出/CDialog:OnOK();/CDialog:OnOK();/取消按钮取消按钮void CDlg_login:OnCancel()void CDlg_login:OnCancel()/TODO:Add extra cleanup/TODO:Add extra cleanup herehereExitProcess(0);ExitProcess(0);/退出退出 10第10页八、单文档中菜单项

15、与对话框联接八、单文档中菜单项与对话框联接1.1.新建单文档工程:新建单文档工程:Ys1Ys1(注意此名由设计者自己任取);(注意此名由设计者自己任取);2.2.在在ResourceViewResourceView,单击单击Insert DialogInsert Dialog,插入一对话框,插入一对话框IDD_DIALOG1IDD_DIALOG1(默认(默认IDID号)号);3.3.右键选中新建对话框,利用类向导建立一个新类右键选中新建对话框,利用类向导建立一个新类Create a new classCreate a new class,名称为:,名称为:C Cdlg_jc(dlg_jc(自己

16、命名自己命名),如右图,如右图1 1所表示所表示;4.4.在在/Ys1View.cpp:/Ys1View.cpp:文件中语句文件中语句#include Ys1View.h#include Ys1View.h后面后面添加新类头文件:添加新类头文件:#include dlg_jc.h#include dlg_jc.h 5.5.编辑主菜单如图编辑主菜单如图2 2所表示:所表示:6.6.在主菜下经过在主菜下经过“建立类向导建立类向导”命令,命令,从从“Class name”“Class name”组合框中选择组合框中选择CYs1ViewCYs1View,如如图图3,43,4所表示,并在函数所表示,并在

17、函数OnJc()OnJc()编写代码以下:编写代码以下:void CYs1View:OnJc()void CYs1View:OnJc()/TODO:Add your command handler code here/TODO:Add your command handler code here C Cdlg_jcdlg_jc jc;jc;/定义一个求阶层对话框对象定义一个求阶层对话框对象jcjcjc.DoModal();jc.DoModal();/让对话框对象以有模式形式显示出来让对话框对象以有模式形式显示出来 7.7.此时单文档菜单项与对话框联接完成。此时单文档菜单项与对话框联接完成。11

18、第11页1.求阶层按钮代码求阶层按钮代码使用使用MFCMFC进行程序设计时进行程序设计时,如输出结果是如输出结果是单值单值,可用以下代码作为模板可用以下代码作为模板:void Cdlg_jc:OnOK()void Cdlg_jc:OnOK()/TODO:Add extra validation here/TODO:Add extra validation hereUpdateData(TRUE);UpdateData(TRUE);/更新控件值更新控件值 double i,jsz=1.0;double i,jsz=1.0;for(i=1;i=m_srs;i+)for(i=1;i=m_srs;i+

19、)jsz*=i;jsz*=i;/求阶乘求阶乘 m_jsz.Format(%f,jsz);m_jsz.Format(%f,jsz);/将双精度型转换为字符,将双精度型转换为字符,f f 对应浮点数对应浮点数/其中其中m_jszm_jsz为输出编辑框组员变量名为输出编辑框组员变量名UpdateData(FALSE);UpdateData(FALSE);/控件值更新编辑框显示控件值更新编辑框显示/CDialog:OnOK();/CDialog:OnOK();12第12页/续上续上for(i=a;i=b;i+)for(i=a;i=b;i+)for(j=2;ji;j+)for(j=2;jTextOut(

20、x,y,s);pDC-TextOut(x,y,s);/在指定位置输出文本在指定位置输出文本 else else pDC-TextOut(x,y,s);pDC-TextOut(x,y,s);/在指定位置输出文本在指定位置输出文本x=x+30;x=x+30;2.求素数按钮代码求素数按钮代码void Cdlg_zss:OnOK()void Cdlg_zss:OnOK()/TODO:Add extra validation here/TODO:Add extra validation hereUpdateData(TRUE);UpdateData(TRUE);/更新控件更新控件值值 CDC*pDC=G

21、etDC();CDC*pDC=GetDC();/获取视图初始客户区获取视图初始客户区DCDC/DC/DC表示设备环境表示设备环境 int a=m_szqz;int a=m_szqz;int b=m_szzz;int b=m_szzz;int i,j,n=0;int i,j,n=0;int x=70,y=220;int x=70,y=220;CString s;CString s;if(b=100)if(bMoveTo(100,100);pDC-MoveTo(100,100);pDC-LineTo(300,500);pDC-LineTo(300,500);15第15页4.单文档菜单项中画矩形代码

22、单文档菜单项中画矩形代码菜单项菜单项“画矩形画矩形”按钮代码:按钮代码:void CWxling_28View:OnHjx()void CWxling_28View:OnHjx()/TODO:Add your command handler code here/TODO:Add your command handler code hereCClientDC dc(this);CClientDC dc(this);CPen pen;CPen pen;/定义画笔定义画笔/创建红色创建红色3 3号粗细实线画笔号粗细实线画笔pen.CreatePen(PS_SOLID,3,RGB(pen.Create

23、Pen(PS_SOLID,3,RGB(255255,0,0);,0,0);CPen*oldpen=dc.SelectObject(&pen);CPen*oldpen=dc.SelectObject(&pen);CBrush brush;CBrush brush;/定义画刷定义画刷/创建绿色画刷创建绿色画刷brush.CreateHatchBrush(HS_CROSS,RGB(0,brush.CreateHatchBrush(HS_CROSS,RGB(0,255255,0);,0);dc.SelectObject(&brush);dc.SelectObject(&brush);dc.Rectan

24、gle(dc.Rectangle(300,300,400,500);300,300,400,500);/画矩形画矩形 16第16页5.单文档菜单项中画椭圆代码单文档菜单项中画椭圆代码菜单项菜单项“画椭圆画椭圆”按钮代码:按钮代码:void CWxling_28View:OnHty()void CWxling_28View:OnHty()/TODO:Add your command handler code here/TODO:Add your command handler code hereCClientDC dc(this);CClientDC dc(this);CPen pen;CPen

25、 pen;/设置画笔设置画笔pen.CreatePen(PS_SOLID,3,RGB(0,255,0);pen.CreatePen(PS_SOLID,3,RGB(0,255,0);CPen*oldpen=dc.SelectObject(&pen);CPen*oldpen=dc.SelectObject(&pen);dc.Ellipse(300,100,600,300);dc.Ellipse(300,100,600,300);/画椭圆画椭圆/*(int x1,int y1,int x2,int y2)/*(int x1,int y1,int x2,int y2)(x1,y1)(x1,y1)和和(

26、x2,y2)(x2,y2)表示所画椭圆外切矩形左上角和右下角坐标表示所画椭圆外切矩形左上角和右下角坐标*/*/17第17页6.单文档菜单项中画单文档菜单项中画sin曲线代码曲线代码在在/Wxl_30View.Wxl_30View.cppcpp中加入头文件:中加入头文件:#include math.h“#include math.h“菜单项菜单项“画画sinsin曲线曲线”按钮代码:按钮代码:void CWxl_30View:OnSin()void CWxl_30View:OnSin()/TODO:Add your command handler code here/TODO:Add your

27、command handler code hereCClientDC dc(this);CClientDC dc(this);CRect rect;CRect rect;/定义矩形对象定义矩形对象GetClientRect(rect);GetClientRect(rect);int x0=rect.Width()/2;int x0=rect.Width()/2;int y0=rect.Height()/2;int y0=rect.Height()/2;dc.MoveTo(20,y0);dc.MoveTo(20,y0);dc.LineTo(rect.Width()-20,y0);dc.LineT

28、o(rect.Width()-20,y0);dc.MoveTo(x0,20);dc.MoveTo(x0,20);dc.LineTo(x0,rect.Height()-20);dc.LineTo(x0,rect.Height()-20);double setp=3.14159/100;double setp=3.14159/100;for(int i=-200;i200;i+)for(int i=-200;imessage=WM_KEYDOWN)if(pMsg-message=WM_KEYDOWN)/键盘消息键盘消息 if(pMsg-wParam=VK_ESCAPE)if(pMsg-wParam

29、=VK_ESCAPE)/键盘上键盘上EscEsc键键return TRUE;return TRUE;if(pMsg-wParam=VK_RETURN)if(pMsg-wParam=VK_RETURN)/键盘上回车键键盘上回车键return TRUE;return TRUE;return CDialog:PreTranslateMessage(pMsg);return CDialog:PreTranslateMessage(pMsg);22第22页8.常见问题处理方法常见问题处理方法1.1.建好建好MFCMFC之后之后(基于对话框基于对话框),然后点击,然后点击Insert-New ClassI

30、nsert-New Class2.2.弹出对话框之后,弹出对话框之后,Class Type:MFC ClassClass Type:MFC Class3.3.在在Base Class:CRecordsetBase Class:CRecordset类,点击类,点击OkOk时候,会弹出要你添加数据库时候,会弹出要你添加数据库对话框你就能够添加了。对话框你就能够添加了。(9 9)怎样为)怎样为MFC MFC 应用程序添加应用程序添加ODBC ODBC 功效?功效?(1 1)在文件)在文件Stdafx.h Stdafx.h 文件末尾添加下面一行:文件末尾添加下面一行:#include#include/

31、MFC ODBC database classes /MFC ODBC database classes(2 2)在文本模式下编辑)在文本模式下编辑RC RC 文件(利用文件(利用File-Open As text File-Open As text 方式)方式)在下面程序行(共有两处)在下面程序行(共有两处)#include l.chsafxprint.rc#include l.chsafxprint.rc/printing/print preview resources /printing/print preview resources 添加下一行:添加下一行:#include l.chs

32、afxdb.rc#include l.chsafxdb.rc/Database resources /Database resources 23第23页9.特殊效果特殊效果(1 1)怎样给)怎样给MFCMFC单文档添加背景?单文档添加背景?为为CTestViewCTestView类添加一个变量类添加一个变量CBrush m_brushBackground;/CBrush m_brushBackground;/定义画刷用于画背景定义画刷用于画背景在在CTestViewCTestView结构函数中加入以下代码结构函数中加入以下代码CBitmap bmp;CBitmap bmp;bmp.LoadBi

33、tmap(IDB_BITMAP1);/bmp.LoadBitmap(IDB_BITMAP1);/加载位图加载位图m_brushBackground.CreatePatternBrush(&bmp);/m_brushBackground.CreatePatternBrush(&bmp);/创建位图画刷创建位图画刷在在OnDrawOnDraw函数中画出来代码以下函数中画出来代码以下CRect rect;CRect rect;GetClientRect(rect);/GetClientRect(rect);/取得客户区域取得客户区域pDC-FillRect(rect,&m_brushBackgrou

34、nd);/pDC-FillRect(rect,&m_brushBackground);/用背景画刷填充区域用背景画刷填充区域为了防止背景闪烁,使显示更完美,添加为了防止背景闪烁,使显示更完美,添加WM_ERASEBKGNDWM_ERASEBKGND消息处理函数,并消息处理函数,并取消调用父类处理函数,代码以下取消调用父类处理函数,代码以下BOOL CTestView:OnEraseBkgnd(CDC*pDC)BOOL CTestView:OnEraseBkgnd(CDC*pDC)return TRUE;return TRUE;编译运行该程序!编译运行该程序!24第24页9.特殊效果特殊效果(2

35、 2)在工程调用其它可执行文件()在工程调用其它可执行文件(.EXE).EXE)在在w1View.cpp:w1View.cpp:中加入头文件:中加入头文件:#include windows.h#include windows.h 在编辑好菜单项中编写代码以下在编辑好菜单项中编写代码以下void CW1View:OnWord()void CW1View:OnWord()/TODO:Add your command handler code here/TODO:Add your command handler code hereWinExec(CLOCKYS.exe,NULL);WinExec(C

36、LOCKYS.exe,NULL);/调用可执行文件调用可执行文件 注意:将可执行文件拷贝至本工程所在文件夹下,不然要获取文件注意:将可执行文件拷贝至本工程所在文件夹下,不然要获取文件路径。若要打开其它类型文件,见本片下面备注。路径。若要打开其它类型文件,见本片下面备注。25第25页9.特殊效果特殊效果(3 3)在工程调用其它任意文件菜单项按钮代码)在工程调用其它任意文件菜单项按钮代码void CW12View:OnYy()void CW12View:OnYy()/TODO:Add your command handler/TODO:Add your command handler code h

37、erecode hereCString path;CString path;/返回文件所在路径,含该文件名返回文件所在路径,含该文件名GetModuleFileName(GetModuleFileName(NULL,/NULL,/要获取文件名模块句柄(见要获取文件名模块句柄(见备注),备注),nullnull表示当前模块表示当前模块 path.GetBufferSetLength(MAX_PATH+1),path.GetBufferSetLength(MAX_PATH+1),/存放取得文件名存放取得文件名MAX_PATH /MAX_PATH /存放取得存放取得文件名参数长度文件名参数长度);)

38、;path.ReleaseBuffer();/path.ReleaseBuffer();/字符串缓冲区长度字符串缓冲区长度锁定解除锁定解除 int pos=path.ReverseFind();/int pos=path.ReverseFind();/从后向从后向前查找前查找 path=path.Left(pos)path=path.Left(pos)path=path.Left(pos);/path=path.Left(pos);/取左取左,参数为字符参数为字符串个数串个数/MessageBox(path);/MessageBox(path);/调试程序时用来调试程序时用来显示查找到当前运行

39、程序所在目录显示查找到当前运行程序所在目录 ShellExecute(NULL,open,path+ShellExecute(NULL,open,path+年年C+C+课程设计任务书课程设计任务书wxl.doc,wxl.doc,NULL,NULL,SW_SHOWNORMAL);NULL,NULL,SW_SHOWNORMAL);26第26页9.特殊效果特殊效果(4 4)仅修改工程中某个对话框图标)仅修改工程中某个对话框图标对对应对话框添加初始化函数对对应对话框添加初始化函数OnInitDialogOnInitDialog()(),并添加以下代码:并添加以下代码:BOOL Cdlg_login:O

40、nInitDialog()BOOL Cdlg_login:OnInitDialog()CDialog:OnInitDialog();CDialog:OnInitDialog();/TODO:Add extra initialization here/TODO:Add extra initialization hereHICON m_hIcon;HICON m_hIcon;/IDR_ICON1/IDR_ICON1为图标资源名为图标资源名 m_hIcon=AfxGetApp()-LoadIcon(IDI_ICON1);m_hIcon=AfxGetApp()-LoadIcon(IDI_ICON1);

41、SetIcon(m_hIcon,TRUE);SetIcon(m_hIcon,TRUE);/Set big icon/Set big iconSetIcon(m_hIcon,FALSE);SetIcon(m_hIcon,FALSE);/Set small icon/Set small iconreturn TRUE;return TRUE;/return TRUE unless you set the focus to a control/return TRUE unless you set the focus to a control/EXCEPTION:OCX Property Pages

42、should return FALSE/EXCEPTION:OCX Property Pages should return FALSE27第27页9.特殊效果特殊效果怎样去掉单文档界面中主框架怎样去掉单文档界面中主框架“无标题无标题”?”?修改修改IDR_MAINFRAMEIDR_MAINFRAME字符串资源中第字符串资源中第2 2个参数个参数(共有共有7 7个参数个参数),分别以,分别以nn结束,即以下格式:结束,即以下格式:nnnnnnnnnnnnnn例例,将主框架标题改为将主框架标题改为”我应用程序我应用程序”28第28页在程序中使用对话框 (4)用鼠标将新添加菜单项拖到“查看”和“帮

43、助”菜单项 之间,结果如图所表示。菜单项“对话框”拖放后位置(5)选择“查看”“建立类向导”菜单命令或直接按Ctrl+W快捷键,则出现MFC ClassWizard对话框,该对话框会自动切换到Message Maps页面。(6)从“Class name”组合框中选择CMainFrame,在Object Ids列表中选择ID_TEST_DLG,然后在Messages框中选择COMMAND消息。29第29页在程序中使用对话框 (7)单击Add Function按钮或双击COMMAND消息,出现“Add Member Function”对话框以输入组员函数名称。系统默认函数名为OnTestDlg,如

44、图所表示。该函数是对菜单项ID_TEST_DLG映射,也就是说,当在应用程序运行时,用户选择“对话框”,则该函数OnTestDlg被调用,执行函数中代码。30第30页在程序中使用对话框(8)单击OK按钮,在ClassWizard“Member functions”列(9)表中将列出新增加组员函数。选择此函数,单击Edit Co(10)de按钮(或直接在函数名双击鼠标),在此组员函数中添加下(11)列代码:void CMainFrame:OnTestDlg()CFirstDlg dlg;/定义对话框类对象 dlg.DoModal();/显示对话框 代码中,DoModal是CDialog基类组员函

45、数,它是用来显示和终止模式对话框。31第31页在程序中使用对话框(9)在OnTestDlg函数实现文件MainFrm.cpp前面添加CFirstDlg类头文件包含,即:#include Ex_SDI.h#include MainFrm.h#include FirstDlg.h“(10)编译并运行。在应用程序菜单上,选择“测试”“对话框”菜单项,将出现如图对话框,这个对话框就是刚才添加对话框。32第32页几个常见几何图形绘制。几个常见几何图形绘制。利用利用MFC AppWizardMFC AppWizard建立一个建立一个SDISDI应用程序,在应用程序,在OnDraw()OnDraw()函数中

46、添加以下程序代码:函数中添加以下程序代码:void CMyGraphView:OnDraw(CDC*pDC)void CMyGraphView:OnDraw(CDC*pDC)CTexthtDoc*pDoc=GetDocument();CTexthtDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);ASSERT_VALID(pDoc);/TODO:add draw code for native data here/TODO:add draw code for native data here for(int xPos=20;xPos100;xPos+=10)f

47、or(int xPos=20;xPosSetPixel(xPos,30,RGB(0,0,0);/pDC-SetPixel(xPos,30,RGB(0,0,0);/绘制像素点绘制像素点 POINT polylpt5=10,100,50,60,120,80,80,150,30,130;POINT polylpt5=10,100,50,60,120,80,80,150,30,130;pDC-Polyline(polylpt,5);/pDC-Polyline(polylpt,5);/绘制绘制4 4条折线条折线 POINT polybpt4=150,160,220,60,300,180,330,20;P

48、OINT polybpt4=150,160,220,60,300,180,330,20;pDC-PolyBezier(polybpt,4);/pDC-PolyBezier(polybpt,4);/绘制贝塞尔曲线绘制贝塞尔曲线 CBrush *pBrhOld;CBrush *pBrhOld;pBrhOld=(CBrush*)pDC-SelectStockObject(LTGRAY_BRUSH);/pBrhOld=(CBrush*)pDC-SelectStockObject(LTGRAY_BRUSH);/使用浅灰使用浅灰色堆画刷色堆画刷 pDC-RoundRect(400,30,550,100,2

49、0,20);/pDC-RoundRect(400,30,550,100,20,20);/绘制圆角矩形绘制圆角矩形 pDC-Arc(20,200,200,300,200,250,20,200);/pDC-Arc(20,200,200,300,200,250,20,200);/绘制椭圆弧绘制椭圆弧 pDC-Pie(220,200,400,380,380,270,240,220);/pDC-Pie(220,200,400,380,380,270,240,220);/绘制扇形绘制扇形 pDC-Chord(420,120,540,240,520,160,420,180);/pDC-Chord(420,1

50、20,540,240,520,160,420,180);/绘制弦形绘制弦形 POINT polygpt5=450,200,530,220,560,300,480,320,430,280;POINT polygpt5=450,200,530,220,560,300,480,320,430,280;pDC-Polygon(polygpt,5);/pDC-Polygon(polygpt,5);/绘制五边形绘制五边形 pDC-SelectObject(pBrhOld);/pDC-SelectObject(pBrhOld);/恢复系统默认画刷恢复系统默认画刷 33第33页绘制效果绘制效果34第34页九、

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服