C++课程设计MFC省公共课一等奖全国赛课获奖课件.pptx
《C++课程设计MFC省公共课一等奖全国赛课获奖课件.pptx》由会员分享,可在线阅读,更多相关《C++课程设计MFC省公共课一等奖全国赛课获奖课件.pptx(148页珍藏版)》请在咨信网上搜索。
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+:了解并掌握:了解并掌握MFCMFC程序结构、消息映射机制、程序结构、消息映射机制、MFCMFC类库类库中惯用类(对话框、各种惯用控件)。中惯用类(对话框、各种惯用控件)。软件开发基本知识软件开发基本知识结合设计任务清楚软件开发基本流程、各个阶段目标和主要工结合设计任务清楚软件开发基本流程、各个阶段目标和主要工作。作。上机调试程序(上机调试程序(3030课时)课时)其它(其它(1414课时)课时)程序调试基本方法和论文撰写要求(程序调试基本方法和论文撰写要求(2 2课时)课时)掌握调试程序方法与技巧。掌握调试程序方法与技巧。清楚论文组织结构、格式编排等相关知识清楚论文组织结构、格式编排等相关知识学生资料查阅与自主学习(学生资料查阅与自主学习(2 2课时)课时)代码编写(代码编写(1010课时)课时)3第3页二、二、Windows 编程基础编程基础Windows Windows 编程编程就是基于就是基于Windows Windows 应用程序。应用程序。2 2种主要种主要WindowsWindows应用程序应用程序基于基于对话框对话框应用程序应用程序基于基于文档文档/视图视图结构应用程序结构应用程序主要特点主要特点含有标准图形用户界面含有标准图形用户界面含有与硬件无关特征含有与硬件无关特征采取采取“消息传递,事件驱动消息传递,事件驱动”运行机制,即依据运行机制,即依据WindowsWindows发发送消息来处理用户输入送消息来处理用户输入编写编写WindowsWindows应用程序主要方法(应用程序主要方法(2 2种)种)使用使用WindowsWindows提供应用程序提供应用程序接口(接口(APIAPI)函数)函数使用使用MicrosoftMicrosoft提供微软提供微软基础类基础类(MFC)(MFC)4第4页三、什么是三、什么是C+MFCMFC(Microsoft Foundation Class LibraryMFC(Microsoft Foundation Class Library,基础类库,基础类库)是微软提供用来编写是微软提供用来编写WindowsWindows应用程序应用程序C+C+类库类库;封装了封装了APIAPI(WindowsWindows接口函数)接口函数),是是Win APIWin API与与C+C+结合。结合。MFCMFC大约有大约有200200多个类,封装了多个类,封装了WindowsWindows大部分编程对象以及与大部分编程对象以及与它们相关操作。即它由几百个执行文件和源代码文件组成。它们相关操作。即它由几百个执行文件和源代码文件组成。注意注意C+C+和和VC+VC+区分区分C+C+是是一个程序设计语言一个程序设计语言,是一个大家都认可软件编制通用规范,是一个大家都认可软件编制通用规范,即即C+C+是一套语法规则名字,类似汉语,英语。是一套语法规则名字,类似汉语,英语。VC+VC+是一个软件是一个软件IDEIDE(编译、编辑、调试编译、编辑、调试 )集成开发环境)集成开发环境 MFC MFC是一个非外挂式是一个非外挂式软件包软件包,类库类库,MFC,MFC类是微软为类是微软为VC+VC+专配。专配。5第5页四、什么是四、什么是MFC编程编程MFCMFC编程编程指就是使用指就是使用VC+VC+进行开发,而且是在使用进行开发,而且是在使用VC+VC+提供提供各种向导情况下各种向导情况下MFCMFC编程。编程。在在VC+VC+中能够创建中能够创建3 3类类经典经典WindowsWindows应用程序应用程序基于对话框应用程序基于对话框应用程序单文档界面(单文档界面(SDISDI)应用程序)应用程序多文档界面(多文档界面(MDIMDI)应用程序)应用程序文档文档/视图视图u文档对象:文档对象:u用来保留数据。用来保留数据。u视图对象:视图对象:u用来显示和编辑数用来显示和编辑数据。据。6第6页五、五、MFC应用程序开发流程应用程序开发流程应用程序编程基本步骤:应用程序编程基本步骤:(1 1)依据应用程序特征在)依据应用程序特征在MFC AppWizardexeMFC AppWizardexe应用程应用程序中序中选择适当应用程序框架选择适当应用程序框架。(2 2)利用)利用资源编辑器编辑资源资源编辑器编辑资源,如菜单等。,如菜单等。(3 3)利用类向导()利用类向导(ClassWizardClassWizard)或手工)或手工添加类添加类、组员组员变量、组员函数变量、组员函数申明。申明。(4 4)编写详细)编写详细组员函数代码组员函数代码。(5 5)编译、链接程序)编译、链接程序检验程序中是否存在语法错误。检验程序中是否存在语法错误。(6 6)调试应用程序。)调试应用程序。7第7页六、单文档【ClassView】面板CAboutDlg(CAboutDlg(关于对话框类关于对话框类)管理关于对话框。管理关于对话框。CFrameWndCFrameWnd(框架窗口类)框架窗口类)CWxling_27AppCWxling_27App(应用程序类)(应用程序类)用来处理消息。用来处理消息。CWxling_27Doc CWxling_27Doc(文档类)(文档类)MFCMFC中数据是存放在类文档中。中数据是存放在类文档中。文档类负责管理和维护数据本身。文档类负责管理和维护数据本身。CWxling_27ViewCWxling_27View(视图类)(视图类)结果显示是在视图类中。结果显示是在视图类中。视图类负责处理用户鼠标和键盘操作。视图类负责处理用户鼠标和键盘操作。8第8页七、登录对话框与单文档视图联接七、登录对话框与单文档视图联接1.1.新建单文档工程:新建单文档工程:TEXTTEXT(注意此名由设计者自己任取);(注意此名由设计者自己任取);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“MainFrm.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),这是窗体框架创建函数。在该函数后面(在这是窗体框架创建函数。在该函数后面(在return 0;return 0;前面)加入语句(注意大小写):前面)加入语句(注意大小写):Cdlg_login dlg;Cdlg_login dlg;/定义一个登录对话框对象定义一个登录对话框对象dlgdlgdlg.DoModal();dlg.DoModal();/让对话框对象以有模式形式显示出来让对话框对象以有模式形式显示出来6.6.此时对话框与单文档联接完成。此时对话框与单文档联接完成。7.7.下载下载“格式工厂格式工厂3.011”3.011”将自己照片转换成将自己照片转换成BMPBMP格式,经过插入格式,经过插入BitmapBitmap命命令,将照片引入至资源中,并添加至对话框中。令,将照片引入至资源中,并添加至对话框中。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: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页八、单文档中菜单项与对话框联接八、单文档中菜单项与对话框联接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(自己命名自己命名),如右图,如右图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所表示,并在函数所表示,并在函数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第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+)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(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=GetDC();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.单文档菜单项中画矩形代码单文档菜单项中画矩形代码菜单项菜单项“画矩形画矩形”按钮代码:按钮代码: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.CreatePen(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.Rectangle(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 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)和和(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 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.LineTo(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=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 ClassInsert-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/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.chsafxdb.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.LoadBitmap(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_brushBackground);/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 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(CLOCKYS.exe,NULL);/调用可执行文件调用可执行文件 注意:将可执行文件拷贝至本工程所在文件夹下,不然要获取文件注意:将可执行文件拷贝至本工程所在文件夹下,不然要获取文件路径。若要打开其它类型文件,见本片下面备注。路径。若要打开其它类型文件,见本片下面备注。25第25页9.特殊效果特殊效果(3 3)在工程调用其它任意文件菜单项按钮代码)在工程调用其它任意文件菜单项按钮代码void CW12View:OnYy()void CW12View:OnYy()/TODO:Add your command handler/TODO:Add your command handler code herecode hereCString path;CString path;/返回文件所在路径,含该文件名返回文件所在路径,含该文件名GetModuleFileName(GetModuleFileName(NULL,/NULL,/要获取文件名模块句柄(见要获取文件名模块句柄(见备注),备注),nullnull表示当前模块表示当前模块 path.GetBufferSetLength(MAX_PATH+1),path.GetBufferSetLength(MAX_PATH+1),/存放取得文件名存放取得文件名MAX_PATH /MAX_PATH /存放取得存放取得文件名参数长度文件名参数长度););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);/调试程序时用来调试程序时用来显示查找到当前运行程序所在目录显示查找到当前运行程序所在目录 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:OnInitDialog()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);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 should return FALSE/EXCEPTION:OCX Property Pages should return FALSE27第27页9.特殊效果特殊效果怎样去掉单文档界面中主框架怎样去掉单文档界面中主框架“无标题无标题”?”?修改修改IDR_MAINFRAMEIDR_MAINFRAME字符串资源中第字符串资源中第2 2个参数个参数(共有共有7 7个参数个参数),分别以,分别以nn结束,即以下格式:结束,即以下格式:nnnnnnnnnnnnnn例例,将主框架标题改为将主框架标题改为”我应用程序我应用程序”28第28页在程序中使用对话框 (4)用鼠标将新添加菜单项拖到“查看”和“帮助”菜单项 之间,结果如图所表示。菜单项“对话框”拖放后位置(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,如图所表示。该函数是对菜单项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基类组员函数,它是用来显示和终止模式对话框。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()函数中添加以下程序代码:函数中添加以下程序代码: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)for(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;POINT 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,20,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,120,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页九、- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 MFC 公共课 一等奖 全国 获奖 课件
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文