课程设计MFC2013.ppt
《课程设计MFC2013.ppt》由会员分享,可在线阅读,更多相关《课程设计MFC2013.ppt(122页珍藏版)》请在三一文库上搜索。
1、C+课程设计,内容及要求,主要内容,课程设计基本要求 Windows 编程基础 什么是C+的MFC 什么是MFC编程 MFC应用程序的开发流程 登录对话框与单文档视图联接 实例介绍,二、Windows 编程基础,Windows 编程 就是基于Windows 的应用程序。 2种重要的Windows应用程序 基于对话框的应用程序 基于文档/视图结构的应用程序 主要特点 具有标准的图形用户界面 具有与硬件无关的特性 采用“消息传递,事件驱动”的运行机制,即根据Windows发送的消息来处理用户的输入 编写Windows应用程序的主要方法(2种) 使用Windows提供的应用程序接口(API)函数 使
2、用Microsoft提供的微软基础类(MFC),三、什么是C+的MFC,MFC(Microsoft Foundation Class Library,基础类库) 是微软提供的用来编写Windows应用程序的C+类库; 封装了API(Windows的接口函数),是Win API与C+的结合。 MFC大约有200多个类,封装了Windows的大部分编程对象以及与它们有关的操作。即它由几百个执行文件和源代码文件组成。 注意C+和VC+的区别 C+是一种程序设计语言,是一种大家都承认的软件编制的通用规范,即C+是一套语法规则的名字,类似汉语,英语。 VC+是一个软件IDE(编译、编辑、调试 )集成开发
3、环境 MFC是一个非外挂式的软件包,类库, MFC类是微软为VC+专配的。,四、什么是MFC编程,MFC编程 指的就是使用VC+进行开发,并且是在使用VC+提供的各种向导的情况下的MFC编程。 在VC+中可以创建3类典型的Windows应用程序 基于对话框的应用程序 单文档界面(SDI)应用程序 多文档界面(MDI)应用程序,文档/视图 文档对象: 用来保存数据。 视图对象: 用来显示和编辑数据。,五、MFC应用程序的开发流程,应用程序编程的基本步骤: (1)根据应用程序的特性在MFC AppWizardexe应用程序中选择合适的应用程序框架。 (2)利用资源编辑器编辑资源,如菜单等。 (3)
4、利用类向导(ClassWizard)或手工添加类、成员变量、成员函数声明。 (4)编写具体的成员函数代码。 (5)编译、链接程序 检查程序中是否存在语法错误。 (6)调试应用程序。,六、登录对话框与单文档视图联接,新建单文档工程:TEXT; 在ResourceView, 单击Insert Dialog,插入一对话框IDD_DIALOG1(默认ID号); 建立一个新类Create a new class,名称为:CDlg_login ; 在FileView中点击source files,双击MainFrm.cpp。找到: CMainFrame:OnCreate(LPCREATESTRUCT lp
5、CreateStruct), 这是窗体框架创建函数。在该函数的后面(在return 0 ;的前面)加入语句(注意大小写): CDlg_login dlg; /生成一个登录对话框对象 dlg.DoModal(); /让对话框对象以有模式形式显示出来 在MainFrm.cpp文件的前面添加: #include “dlg_login.h“ 此时对话框与单文档联接完成。 下载“格式工厂3.011”将自己的照片转换成BMP格式,并添加至对话框中。,六、登录对话框退出按钮代码,/确定按钮 void CDlg_login:OnOK() / TODO: Add extra validation here th
6、is-UpdateData(true); if(this-m_name1=“wxl“ ,/取消按钮 void CDlg_login:OnCancel() / TODO: Add extra cleanup here ExitProcess(0); /退出 ,七、实例介绍,实例1静态控件的使用 实例2编辑框应用 实例3单选钮应用程序 实例4简易时钟应用程序 实例5计算器应用程序 实例6调用自定义对话框 实例7数据库编程实例,返回目录,实例1静态控件的使用,创建步骤: 建立基于对话框的MFC应用程序框架; 设置对话 放置控件; 在菜单或工具栏的空白处,单击右键,弹出控件工具栏,再选择所需控件; 设
7、置控件属性; 调试程序,步骤1:建立基于对话框应用程序框架,(1)创建工程:TEST1,步骤2、3:放置控件;调试程序,(1)删除现有控件 (2)设置对话框标题 利用“属性”设置 (3)添加组框 设置属性 (4)添加静态文本框 设置属性 (5)添加图片 单击“插入/资源”命令,通过菜单引入: (位图(BMP或DIB)、图标(Icon)、图元文件(wMF ) 图片控件属性对对话框中的类型、图像进行设置,返回实例,特殊效果对话框中设置静态文本框字体及颜色,操作步骤: 1. 添加对话框类声明中字体和颜色变量 class CDHK2013Dlg : public CDialog / Construct
8、ion public: CFont m_myFont; / 字体对象 COLORREF m_myColor; / 颜色对象 . 2. 在对话框初始化函数OnInitDialog()中对字体和颜色进行初始化 m_myFont.CreatePointFont(150, _T(“华文彩云”); /150是字体大小 m_myColor = RGB(255, 0, 255);,续上:,3. 为对话框类添加WM_CTLCOLOR消息响应函数,并在其消息响应函数OnCtlColor()中添加代码 / 消息响应函数实现 HBRUSH CDHK2013Dlg:OnCtlColor( CDC* pDC, CWnd
9、* pWnd, UINT nCtlColor ) HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor); / TODO: Change any attributes of the DC here (在此更改 DC 的任何属性) if(pWnd-GetDlgCtrlID()=IDC_STATIC_1) pDC-SelectObject( ,实例2编辑框应用,创建步骤: 建立基于对话框的MFC应用程序框架; 设置对话 放置控件; 设置控件属性; 为控件连接变量,即为控件命名; 添加并且编写消息处理函数; 调试程序。,步骤1,2:建立框架、添加控
10、件,(1)创建工程:TEST2 (2)添加控件,并设置控件相关属性,步骤3:连接变量,(1)单击“建立类向导”命令,启动类向导; (2)选择“成员变量”选取项卡,连接变量; (3)结果如右图所示,BOOL CTEST2Dlg:OnInitDialog() CDialog:OnInitDialog(); / Add “About.“ menu item to system menu. m_avg=“0.0“; UpdateData(FALSE); /省略,步骤4:进行消息映射,(1)初始化对话框(是程序运行时的开始状态的设定) 进入ClassWiZard(类向导),Message Maps,在O
11、bject IDs里选择要添加OnInitDialog()函数的对话框类,在Messages里选择WM_INITDIALOG,单击Add Function(增加函数),此时对话框类就新增了一个函数是OnInitDialog()。 (2)编辑初始化代码:,void CTEST2Dlg:OnJs() / TODO: Add your control notification handler code here UpdateData(TRUE); /更新控件值 double avg=double(m_sx+m_yw+m_yy)/3.0; m_avg.Format (“%6.2f“,avg); Upd
12、ateData(FALES); /控件值更新编辑框显示 ,步骤5:编写代码_对“计算平均分”按钮,(1)双击“计算平均分”按钮,为IDC_JS添加BN_CLICKED消息映射: (2)编写代码。,步骤6:编写代码_对“退出”按钮,(1)双击“退出”按钮,为IDC_OK添加BN_CLICKED消息映射: (2)编写代码。,void CTEST2Dlg:OnOk() / TODO: Add your control notification handler code here OnOK(); ,步骤7:调试程序_运行,注意: 对话框中平均分显示部分是在设置属性时,选择了“扩展样式”选项卡中的“客户
13、边缘”选项的效果。,返回实例,实例3单选钮应用程序,设计如右图所示的程序。 基本步骤: 创建工程TESTp246,并进行界面设计; 为编辑框连接到CString类型的添加成员变量m_xm,其余控件不需连接; 为控件编辑ID 4. 对单选钮编写初始化函数代码 5. 对对话框的“确定”按钮编写代码,步骤13:建立框架,连接变量,编辑ID,注意 对组框1中2个单选按钮,在设置第一个按钮(男)的属性时,需选定“组”选项,表示此组默认第1个按钮; 同理对组框2中3个单选按钮,在设置第一个按钮(教授)的属性时,需选定“组”选项,表示此组默认第1个按钮; 组框本身的属性不要选中“组”选项。,步骤4:单选钮初
14、始化函数代码,BOOL CTESTp246Dlg:OnInitDialog() CDialog:OnInitDialog(); CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1); CheckRadioButton(IDC_RADIO3,IDC_RADIO5,IDC_RADIO3); / Add “About.“ menu item to system menu. ,表示为默认按钮,步骤5:对话框的“确定”按钮代码,void CTESTp246Dlg:OnButton1() / TODO: Add your control notificati
15、on handler code here UpdateData(TRUE); CString s; s=s+m_xm; if(IsDlgButtonChecked(IDC_RADIO1) s=s+“男“; else s=s+“女“; if(IsDlgButtonChecked(IDC_RADIO3) s=s+“教授“; else if(IsDlgButtonChecked(IDC_RADIO4) s=s+“副教授“; else s=s+“讲师“; AfxMessageBox(s); ,返回实例,实例4简易时钟程序,基本步骤: 创建工程CLOCKYS(时钟演示) 添加新类CClockEx,实现时
16、钟控件类。 添加消息响应及函数,来建立时钟控件的轮廓。 时钟设计时钟元素 创建时钟基类CClockElement 添加时针类、分针类、秒针类 编译执行。 步骤1:创建工程CLOCKYS,返回实例,步骤2:创建一个新类CClockEx,从CStatic(静态控件)类派生出类CClockEx 来实现时钟控件类,这样,就可以继承MFC静态控件的很多已经具备的功能和特点.,步骤3:添加消息响应建立时钟控件的轮廓,时钟控件的轮廓 单击“查看建立类向导” 调出Class Wizard,在class name中选择刚建立的新类CClockEx,进行如下工作:,重载虚函数PreSubClassWindow 对
17、时钟控件的基本初始化工作将在该函数中进行。 添加WM_PAINT消息响应 用于完成时钟的绘制工作。 添加WM_SIZE消息响应 以便设计的时钟控件能自动适应其大小的变化。 添加WM_TIMER的消息响应 定时刷新时钟控件让它走动。 此时,时钟控件的轮廓已建好。效果如图所示。,步骤4:时钟设计时钟元素,时钟绘制的具体实现。 时钟大致由:时钟背景、时针、分针、秒针4个部分构成。这4个部分可看作4个不同的对象,可以考虑建立类来分别实现。 。 CClockBackground (背景) CClockHourHand(时针) CClockMinHand(分针) CClockSecHand(秒针) 这4个
18、类有它们的共同点: 都有自己的绘图函数; 都有自己的绘图颜色; 都应有颜色设置函数; 都有绘图区域和区域设置函数等等。 因此,可以为它们的共性建立一个基类,命名为: CClockElement(时钟元素)。,步骤4续:创建时钟基类CClockElement,先建各个组成类的基类: CClockElement 方法: 右键单击ClassView的工程选择New Class; 在ClassType里面选择Genenric Class,类; CClockElement不需要从其它类派生,所以Base Class可以不填,效果如右图所示。,步骤4续:创建时钟基类CClockElement代码,对类CC
19、lockElement的源代码进行编写。 添加头文件 #include 因后面的绘图中需要用到sin和cos这两个数学计算公式。 为后面计算使用,定义数学常量 PI(3.1415926535)。 在基类中定义绘图区域变量 时钟的每个组成部分都有绘图区域区域,可定义颜色变量。 为了是颜色不显得单调,这里为每个控件设置两种颜色(如果想使程序更加绚丽,可以设置更多颜色)。 增加接口函数 这些变量需增加接口函数来进行访问。 每个组成部分都应该有的Draw(绘图)函数 也需在基类中定义,但是,该函数对于基类来说是无需函数实现的,因此可定义为纯虚函数。,步骤4续:创建时钟基类CClockElement代码
20、,/ ClockElement.h: interface for the CClockElement class. CClockElement的实现的头文件代码如下: #if !defined(AFX_CLOCKELEMENT_H_08A9DFB3_95C0_4D70_9BC0_96D3BACAB74A_INCLUDED_) #define AFX_CLOCKELEMENT_H_08A9DFB3_95C0_4D70_9BC0_96D3BACAB74A_INCLUDED_ #if _MSC_VER 1000 #pragma once #endif / _MSC_VER 1000 #include
21、 #define PI 3.1415926535 class CClockElement public: void SetColor(COLORREF crMain, COLORREF crOther); /设置颜色 void SetTime(const CTime ,CClockElement的实现的源文件关键代码如下:,/ ClockElement.cpp: CClockElement:CClockElement() /时钟基类构造函数 m_nRadius = 0; /时钟半径 m_crMain = RGB(255, 255, 255); /主要颜色 m_crOther = RGB(128
22、, 128, 128); /辅助的其他颜色 CClockElement:CClockElement() /时钟基类析构函数 /设置绘图区域函数 void CClockElement:SetRegion(LPRECT lprcRect) m_rcRegion = lprcRect; /区域取值 m_nRadius = m_rcRegion.Width() / 2; /半径取值 if (m_rcRegion.Width() m_rcRegion.Height() /半径的宽度和顶点比较 m_nRadius = m_rcRegion.Height() / 2; /设置当前时间函数 void CClo
23、ckElement:SetTime(const CTime /获取其他颜色 ,步骤5:创建时钟背景类CClockBackground,时钟背景类CClockBackground 操作方法: 在ClassView的工程名上面点右键,选择New Class, 在ClassType里面选择Genenric Class, 选择类Base Class CClockElement类 因CClockBackground需从类CClockElement派生 效果如图所示。,步骤5续:创建时钟背景类CClockBackground,CClockBackground只需实现基类的虚函数Draw即可,因此这里重载基
24、类的虚函数Draw,其头文件实现代码如下(不用编写,由系统生成): #include “ClockElement.h“ class CClockBackground : public CClockElement public: CClockBackground(); virtual CClockBackground(); ;,CClockBackground源文件代码如下:,/ ClockBackground.cpp: /时钟背景函数 CClockBackground:CClockBackground() /为时钟背景定义默认的颜色设置 m_crMain = RGB(0, 255, 0); /
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 MFC2013
链接地址:https://www.31doc.com/p-2640290.html