mfc程序设计

上传人:xzh****18 文档编号:51466139 上传时间:2018-08-14 格式:PPT 页数:53 大小:3.86MB
返回 下载 相关 举报
mfc程序设计_第1页
第1页 / 共53页
mfc程序设计_第2页
第2页 / 共53页
mfc程序设计_第3页
第3页 / 共53页
mfc程序设计_第4页
第4页 / 共53页
mfc程序设计_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《mfc程序设计》由会员分享,可在线阅读,更多相关《mfc程序设计(53页珍藏版)》请在金锄头文库上搜索。

1、第9章 Windows编程基础 及MFC编程Windows应用程序的主要特点: 具有标准的图形用户界面; 具有与硬件无关的特性; 采用“消息传递,事件驱动”的运行机制。 VC+编写Windows应用程序有两种方法: 使用Windows提供的API函数(Application Programming Interface); 使用Microsoft提供的MFC类库(Microsoft Foundation Class)。事件驱动原理 Windows应用程序采用基于消息的事件驱动运行机制。事件是系统产生的 动作或用户运行应用程序产生的动作,事件通过消息进行描述和标识 。在Windows系统中,程序的

2、执行顺序完全取决于事件的发生顺序。Windows系统消 息 队 列键盘消息鼠标消息应用程序消息获取消息退出消息处理终止执行是否Windows编程必须了解以下内容: 窗口:是应用程序基本的操作单元,应用程序的运行过程 即是窗口内部、窗口与窗口之间、窗口与系统之间进行数 据处理与交换的过程。 事件驱动:程序设计围绕事件或消息产生驱动运行处理函 数。消息是描述事件发生的信息。常用消息有:1)WM_LBUTTONDOWN 单击鼠标左键时产生消息2)WM_RBUTTONUP 放开鼠标右键时产生消息3)WM_RBUTTONDOWN单击鼠标右键时产生消息4)WM_LBUTTONDBLCLK 双击鼠标左键时产

3、生消息 句柄:指Windows使用的一个唯一的整数值,是4字节长的 数值,用于标识应用程序中不同的对象和同类对象中不同 的实例。诸如一个窗口、按钮、图标、滚动条等。常用句柄类型及其说明句柄类型说明HWND标识窗口句柄HINSTANCE标识当前实例句柄HCURSOR标识光标句柄HBITMAP标识位图句柄HMENU标识菜单句柄VC+源程序组成结构 WinMain函数:入口函数,完成一系列的定义和初 始化,并产生消息循环。int WINAPI WinMain( HINSTANCE hInstance, /应用程序当前实例句柄 HINSTANCE hPrevInst, /应用程序其他实例句柄 LPST

4、R lpszCmdLine, /指向程序命令行参数的指 针 int nCmdShow) /应用程序开始执行时窗口显 示 方式的整数值标识 窗口函数WndProc:由一个或多个switch语句组成 。 数据类型:LONG32位有符号整数DWORD32位无符号整数UINT32位无符号整数BOOL布尔值LPTSTR指向字符串的32位指针LPCTSTR指向字符串常量的32位指针LPSTR指向字符串的32位指针LPCSTR指向字符串常量的32位指针例9.1一个简单的应用API函数的例子。应用 MessageBox生成一个对话框。例apiMFC概述 目前的MFC版本中包含了100多个类,不同的类 实现不同

5、的功能。MFC同时还是一个应用程序框 架,它封装了一个程序操作的每一个方面。程序 员通过定义MFC类的对象并通过调用对象的成员 函数来实现相应的功能,而很少直接调用 Windows API函数。 MFC中的类:CObject(根类)、非CObject派生 类。如下继承关系:CObject CCmdTarget CWinThread CWinApp 命令相关类 CCmdTarget:MFC库中所有具有消息映射 属性的基类。 线程基类 CWinThread:封装OS的线程功能。 窗口应用程序类 CWinApp:封装了初始化、运行、终 止应用程序的代码。包含了大量数据成员和成员函数。 此外还有一种派

6、生关系: CObject CCmdTarget CWnd CView 窗口类 CWnd:提供MFC中所有窗口类的基本功能。 视类 CView:显示文档数据并接收输入的客户区,有以 下一些派生类 CScrollView、CEditView等。 菜单类 CMenu:是CObject类的子类,提供菜单界面。 对话框类 CDialog:从CWnd中派生,包含了大量子类 。 控件类:包括若干子类,用于建立静态文本框、按钮、 列表框、滚动条等。例题9.8 简单的MFC应用程序简单MFC应用程序 创建一个对话框程序分以下几步: 建立基于对话框的MFC应用程序框架; 放置控件; 设置控件属性; 为控件连接变量

7、,即为控件命名; 添加并且编写消息处理函数。 例:编写应用程序:若单击“复制”按钮,则把上 面编辑框中的内容复制到下面的编辑框中;若 单击“结束”按钮,则退出程序运行。编辑框的属性: 1.Multiline 多行文本 2. Vertical scrool 和Auto VScroll有垂直滚动条 3. Want return 可按回车输入多行文本连接变量即为控件命名,每一控件都是一个对象 ,调用MFC类库中的函数都是通过对象来实现 的。 如m_e1,类别:Control 类型:CEdit类成员函数功能应用示例SetSel(n,m)选定编辑 框中从第n个 字符到第m个字符的内 容M_e.SetSe

8、l(0,-1);选定 所有内容Copy()将编辑 框中当前选定的 内容复制到剪贴板M_e.Copy();Cut()将编辑 框中当前选定的 内容剪切到剪贴板m_e.Cut();Clear()删除编辑 框中当前选定 的内容M_e.Clear();Paste()将剪贴板内容粘贴到编 辑框中光标所在位置M_e.Paste();Undo()撤消对编辑 框的最后一 次操作M_e.Undo();ReplaceSel(ch)将ch中的内容替换编辑 框中选定的内容Char ch80=“abcd” M_e. ReplaceSel(ch);CWnd类的成员函数:(CEdit类对象可用) 获取编辑框中的内容:void

9、 GetWindowText(CString 将编辑框中的内容复制到CString类对象rString中。 如:CString ch;m_e1.GetWindowText(ch); 2.设置编辑框中的内容: void SetWindowText(LPCTSTR lpszString); 将lpszString中的内容替换编辑框中的内容, lpszString是字符数组或字符指针。 如:char ch20=“character”;m_e2.SetWindowText(ch); 例:用上述方法改写上例。静态文本框、命令按钮和编辑框 静态文本框static text:用来显示文本信息, 不连接变量,

10、也不需要处理函数。 命令按钮button:通常是单击按钮则执行相应 的消息处理函数,一般不需要连接变量。命令 按钮能处理BN_CLICKED消息。CObjectCCmdTargetCWndCStaticCButtonCEdit编辑框 edit box:是一个文本编辑区域,能对它进行剪切、复制、粘贴、撤销 等操作,一般不需要对它进行编程。连接变量:若一个编辑框连接了Value类别的变量,则要保证编辑框内容和变量 值一致:若编辑框内容改变了,用UpdateData(TRUE)更新对应变量的值;若变 量的值改变了则用UpdateData(FALSE)更新编辑框的内容。消息处理函数:EN_CHANGE

11、,这是编辑框中的文本被修改后发出的消息。例:输入ax2+bx+c=0的系数a,b,c,计算并输出两个根x1和x2。例10-1 P258Format()函数:它是CString(串类)的成 员函数,VC中,字符串是“对象”(即串类 的变量),所以可使用 对象.Format ()输 出值,如m_Result.Format(“%d”,i) ,以整 数的方式输出变量i的值,m_Result为某 个字符串。框架、单选按钮和复选框 框架group box:使用它把一组相关的控件框起来, 达到标识一组的控件的作用,不要连接变量,也不 要处理函数。 单选按钮radio button:只能选一组中的一项1.设计

12、要求:必须一个接一个地放进对话框中,中间 不能插入其它控件,且一个组的第一个按钮要选中 “Group”属性,只能对第一个按钮连接变量。2.重要属性: (ID) 每个按钮都有一个缺省ID,如 IDC_RADIO1,可以重新设置。(标题) 即按钮右 边显示的文本标题。(Group) 一组中第一个按钮 选中该属性。3.消息:BN_CLICKED 4.重要函数:(1)设定单选按钮选中状态 void CheckRadioButton(int nIDFirstButton, int nIDLastButton, int nIDCheckButton); nIDFirstButton:一组中第一个单选按钮的

13、ID; nIDLastButton:一组中最后一个单选按钮的ID; nIDCheckButton:为初始时设置为选中的那个单选按 钮的ID (2)判定单选按钮是否被选定 形式:UINT IsDlgButtonChecked(int nIDButton); 如果ID为nIDButton的按钮被选定,则该函数的返回值 为true,否则为false。例:设计下面所示程序。全局函数以Afx为前缀 函数 AfxMessageBox(s) 弹出一个消息框。 复选框 check box 1.属性 (1)ID 缺省为IDC_CHECK1,可 重新设置。(2)标题 即复选框右边显示 的文本标题。 2.连接变量

14、:通常是Value类别的BOOL类 型变量。 3.消息:处理BN_CLICKED消息。 例:滚动条 scroll bar滚动条是CScrollBar的对象 初始化: (1)设置最大和最小值void SetScrollRange(int nMinPos,int nMaxPos);nMinPos表示最小值, nMaxPos表示最大值。(2)设置滑块位置int SetScrollPos(int nPos); nPos表示滑块位置 消息 WM_VSCROLL 和 WM_HCROLL 函数:OnVScroll( ) 和OnHScroll( ) 滚动条动作标识:SB_THUMBTRACK(被拖动)SB_L

15、INELEFT (向左滚动一行) SB_LINERIGHT (向右滚动一行) SB_PAGELEFT(向左滚动一页) SB_PAGERIGHT(向右滚动一页) (3)获取滑块当前位置所代表的值。GetScrollPos( );例例 10.4 P271函数:char *itoa(int value, char *string, int radix); 功能:将数字转换为字符串 函数有3个参数:第一个参数是要转换的数字,第二个参 数是要写入转换结果的目标字符串,第三个参数是转移 数字时所用的基数(用2进制或10进制)。 char * :指向生成的字符串。 垂直滚动条成员函数函数OnVScroll(

16、)格 式: OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)nSBCode:标识值,说明用户对滚动条的操作类型,如拖 动滑块、单击向上箭头等。 nPos: 表示滑块当前位置,无符号整数。 pScrollBar:指向用户正在进行操作的滚动条,滚动条类 的指针。(多个滚动条需要用条件判断语句实现)列表框 list box 通过显示多个选项,供用户选择,达到与用户对话的目的。特点:只能进行选择, 而不能直接修改其中的选项。 属性设置(1)SelectionSingle:单选 Multiple:多选 Extended:允许用Ctrl键进行多项选择。(2)Sort 选项按字母顺序

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号