版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MFC编程MFC(MicrosoftFundationClass)微软基础类库,其中包含用来开发c++应用程序和windows应用程序的一组类。应用程序类:
是CWinApp类中派生出来的。
功能:
为应用程序段的所有对象,包括文档、视图和边框窗口进行的初始化工作。在该类中定义了一个唯一的全局变量theApp,它代表了应用程序运行实例的主线程。theApp在程序的整个运行期间都是存在的,它若销毁则意味着运行程序实例的消亡。对话框类:
是CDialog类中派生出来的。
功能:
封装了对话框的功能,主要用于输出信息和接受用户的输入。控件(Control)
是Windows系统定义的一类标准子窗口,它们中的大多数可以捕获事件并向父窗口发送消息。
控件的外观和功能由其属性决定。
设置控件对应变量:如果要在程序中访问对话框中的控件,就必须给这些控件分别设置对应的变量。所谓设置对应变量,就是给程序中要用到的控件对象定义一个与之关联的变量作为控件的代理。也就是说,一个变量代表一个具体的控件对象。举例:密码验证对话框密码验证对话框Windows程序设计的基本概念(1)事件:windows程序设计围绕着事件或消息的产生驱动运行处理函数(过程)。事件是指在windows环境下,应用程序启动后,系统等待用户在图像用户界面内的输入选择,如鼠标按键、键盘按键、窗口被创建、关闭、改变大小、移动等。事件产生方式:通过输入设备,如键盘和鼠标。通过屏幕上的可视对象,如菜单项、工具栏按钮等。来自windows内部。Windows程序设计的基本概念(2)消息: 只要发生事件,系统就产生消息,消息描述了事件的类别,包含了相应信息,windows应用程序利用消息与系统及其他应用程序进行信息交流。 当windows捕获一个事件后,会编写一条消息,并将相关信息放入一个数据结构中,然后将包含此数据结构的消息发送给需要此消息的应用程序。
windows消息在文件中都是以宏定义的常数形式存在。如:WM_LBUTTONDOWN:单击鼠标左键产生此消息BOOL
UpdateData(BOOL
bSaveAndValidate=TRUE)函数说明是MFC的对话框类的成员函数,用来刷新数据。函数使用
参数值为TRUE时,刷新窗体,
控件的值—>变量。参数值为FALSE时,变量值—>控件。举例2:简易计算器举例2:简易计算器(改进)voidCCale2Dlg::OnButton1(){ //TODO:Addyourcontrolnotificationhandlercodehere
this->UpdateData(TRUE);
switch(m_oper) { case0: m_edit3=m_edit1+m_edit2; break; case1: m_edit3=m_edit1-m_edit2; break; } this->UpdateData(FALSE);}2文档/视图概念文档/视图概念默认情况下,“MFC应用程序向导”用文档类和视图类创建应用程序主干,并将数据管理分成文档类和视图类。文档类:文档是应用程序数据元素的集合。文档类用于管理和维护数据,存储数据和管理数据的打印,并协调更新多个数据视图。11.1文档/视图概念 视图类:视图是数据的用户界面,负责显示全部或部分数据,管理用户与数据之间的交互,包括选择和编辑。11.2视图类CView几个重要的视图类成员函数CDocument*GetDocument()返回与该视图类对象关联的文档类对象的指针。用于从文档中获取数据。11.2视图类CView几个重要的视图类成员函数virtualvoidOnDraw(
CDC*pDC)=0;用于更新视图。在函数中,首先调用GetDocument()函数,取得指向当前视图所对应的文档的指针,然后通过这个指针访问文档中的数据。然后使用传递过来的CDC类对象的指针pDC进行实际的绘图或打印。应该被派生类重载。CDC类中封装了大量的绘图和文字输出方法文字信息显示
TextOut画线:
step1MoveTo()
(返回移动前的绘图位置),
step2LineTo()绘制矩形Rectangle绘制椭圆
Ellipse文档类CDocument文档数据成员的初始化当用户启动应用程序、或选择了“FileNew”菜单时,需要对文档的数据成员初始化。virtualBOOLOnNewDocument();
用于初始化文档类的数据成员。应用程序启动:由CDocument的派生类CMyDoc的构造函数调用。选择“FileNew”菜单:由消息处理函数CWinApp::OnFileNew()调用。
重绘客户区何时需要重绘整个窗口或区域?应用程序启动、建立新窗口;改变窗口大小、移动、恢复被遮盖的部分;窗口内容(数据)被修改;窗口无效时,系统发送两个消息:WM_PAINT:通知客户区有变化,由CWnd::OnPaint()函数响应,并间接调用用户重载的CView::OnDraw()成员函数。WM_NCPAINT:通知非客户区有变化,由系统负责该部分的重绘。WM_PAINT消息由系统自动传递WM_PAINT消息需要用户编程控制发送
重绘客户区如何实现用户编程发送WM_PAINT消息?
voidCWnd::Invalidate(BOOLbErase=TRUE);触发WM_PAINT消息,导致全部窗口无效(需要重绘)。
重绘客户区如何实现用户编程发送WM_PAINT消息?(续)
voidCWnd::InvalidateRect(LPCRECTlpRect,BOOLbErase=TRUE);说明:触发WM_PAINT消息,导致指定区域被重绘。bErase:指明重绘时对背景的处理方式:
bErase=TRUE:要求背景擦去重绘;bErase=FALSE:背景保持不变。键盘的消息响应函数Onkeydown
afx_msgvoidOnkeydown
(UINTnChar,UINTnRepCnt,UINTnFlags)功能:键盘的消息响应函数,用于处理消息WM_KEYDOWN其中:
nChar:用户按键代码。如:VK_0~VK_9数字键0~9(不在数字键盘上)
VK_A~VK_Z字幕键A~ZVK_UP向上方向键
VK_DOWN向下方向键
VK_LEFT向左方向键
VK_RIGHT向右方向键UNIT:windows数据类型,相当于unsignedint定时器消息定时器消息定时器概述定时器每隔一定的时间间隔,中断一次,并触发定时器消息WM_TIMER。WM_TIMER消息的处理:加入系统消息队列,由系统处理;加入应用程序队列,由应用程序处理。可以由默认的定时器处理函数OnTimer()处理,也可以指定某个特定的函数处理。定时器消息定时器的使用:设置定时器重载定时器消息处理函数删除定时器定时器消息设置定时器UINTCWnd::
SetTimer(UINT
nIDEvent,UINT
uElapse,void*
lpfnTimer);说明:nIDEvent:定时器标识,非0值,nElapse:时间间隔,单位为毫秒。lpfnTimer:声明WM_TIMER消息处理函数的地址。如果此参数为NULL值,WM_TIMER消息将被植入应用程序的消息队列,并由CWnd对象操纵。11.6定时器消息删除定时器BOOLCWnd::KillTimer(int
nIDEvent);说明:nIDEv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业产业发展实施方案及研究报告
- 2024年岗位描述协议
- 出口销售合同模板英文
- 2024年临沂建筑用钢模板租赁合同范本
- 招标中标合同模板
- 幼儿园特殊儿童安全协议书
- 招商运营合同模板
- 柑橘管护合同模板
- 公路保洁服务合同模板
- 地沟维修合同模板
- 2024年消防宣传月知识竞赛考试题库200题(含答案)
- 五年级口算题卡每天100题带答案
- 汽车行业金融服务方案
- 生命体征课件教学课件
- 庆祝第75个国庆节共筑中国梦大国华诞繁盛共享课件
- 【《论粉丝经济的发展现状与趋势》6000字(论文)】
- 1.2 规划初中生活(2024年秋版)
- 2024-2030年中国拍卖行业市场深度调研及竞争格局与投资研究报告
- 2024年国家机关事务管理局机关服务中心招聘历年高频考题难、易错点模拟试题(共500题)附带答案详解
- 油漆作业风险和隐患辨识、评估分级与控制措施一览表
- 流体力学期末复习试题含答案(大学期末复习资料)
评论
0/150
提交评论