MFC学习笔记-匡桂明
更新时间:2024-04-06 20:53:01 阅读量: 综合文库 文档下载
- mfc学生成绩管理系统推荐度:
- 相关推荐
第一讲:
MFC:Microsoft Foundation Class
API: Application Programming Interface
按资源的类型,又可将句柄细分成图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各类型的句柄。 WM: Window Message
wParam和lParams都是整型。Specifies additional information about the message. The exact meaning depends on the value of the message member。 WORD:16位的整数。 DWORD:Double WORD time : 表示消息被投递出去的时间。
pt: 指示了消息被投递时光标在屏幕中的位置。
屏幕坐标通常是以左上角为原点,向右X坐标增加,右下Y坐标增加。
DC Device-Context
::GetDC(&hwnd):传入的参数是一个窗口的句柄,这个hwnd可以类比是要画图的那块画布的标识。得到一个DC,用完后要ReleaseDC(),否则会造成内存泄露。 GetDC() 和ReleaseDC()成对使用。 BeginPaint() 和 EndPaint()成对使用。
An application should not call BeginPaint except in response to a WM_PAINT message. Each call to BeginPaint must have a corresponding call to the EndPaint function
第二讲:
在C语言中,结构体里面是不允许有函数的,但是C++中支持结构体中包含函数
在Struct中缺省情况下所有的成员是public的,但是class中缺省的情况下成员是private的
第三讲:
WinMain函数在C:\\Program Files\\Microsoft Visual Studio\\VC98\\MFC\\SRC的APPMODUL.CPP文件中(_tWinMain函数)
全局变量或者全局对象是在main函数加载之前就已经为它们分配内存空间。
带Afx前缀的函数是应用程序框架类函数,这些函数都是全局的函数。
AfxWinMain函数在C:\\Program Files\\Microsoft Visual Studio\\VC98\\MFC\\SRC的WINMAIN.CPP文件中。
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
结构体CREATESTRUCT中的成员和CreateWindowEx函数中的参数完全一致(顺序相反) 结构体CREATESTRUCT的作用:让我们有机会在创建产生窗口之前有机会去修改窗口的外观!
CDoc完成数据的存储和加载 CView完成数据的显示和修改
CWnd的对象并不等于窗口!
CWnd内部定义了一个窗口的handle
CWnd的对象销毁时,关联的窗口也会被销毁。
通常在定义一个变量是会在名字前加上m_(如:m_wnd),表明这个变量是类的成员变量
MFC机制:设计窗口,注册窗口,创建窗口,显示窗口,更新窗口,消息循环
第四讲:
View类窗口已经覆盖在MainFrame窗口之上!所以在窗口上的操作都是对View类窗口的操作!
MFC采用的是消息映射机制!
在后台维护了一个窗口的句柄和C++对象指针的一个对照表。当收到一个消息时(MSG这个结构体的第一个参数就指明了这个消息和哪个窗口相关),通过这个句柄可以找到对应的C++对象的指针,然后通过这个指针传递给基类,基类会调用WinProc函数来处理。在WinProc函数中调用了OnWndMsg函数,真正的消息路由处理是由OnWndMsg函数完成的,在OnWndMsg函数会很据消息种类查找消息映射,在对应的C++类的头文件中查找在DECLARE_MESSAGE_MAP()语句前是否有消息响应函数原型声明,查找在CPP文件中的消息映射的宏(BEGIN_MESSAGE_MAP()与END_MESSAGE_MAP()之间),最终找到消息响应函数。
FromHandle函数由一个hwnd得到对应C++对象的指针。
第五讲:
创建一个插入符,用函数CreateSolidCaret
字体的高度:tmAscent+tmDescent
字符在屏幕显示的长度:可以用函数CDC::GetTextExtent GetTextExtent() VS GetTextMetrics():
GetTextMetrics() 获取的是当前字体信息的度量。
GetTextExtent() 获取的是一个特定字符串在屏幕上显示的宽度和高度。
路径层:BeginPath()打开路径层,EndPath()关闭路径层
创建路径层的作用:SelectClipPath()函数设置一个互操作的模式,来达到一个特殊的效果!
在窗口输出一串文字
OnDraw函数在窗口发生重绘时会被应用程序的框架所调用
第六讲:菜单
在给资源取ID号时,通常用大写字母表示,而且在ID后加一个字母用以标识这是哪种资源,例如图标IDI(Icon),光标IDC(cursor),菜单IDM(menu)
从CWnd派生出来的类既可以接受命令消息,也可以接受标准消息 从CCmdTarget派生出来的类命令消息,不能接受标准消息
WindowProc是CWnd的成员函数。
一个命令消息的路由: CMainFrame→CView
CView自身不响应的话CView→CDoc CDoc不响应的话,将消息返还给CView CView将消息返还给CMainFrame
CMainFrame不响应的话CMainFrame→CApp
分隔符也是一个菜单项!
一个子菜单中只能有一个缺省菜单。
作为一个图形标记菜单,图形标记的位图尺寸是有限定的。可以通过GetSystemMetrics函数获取图形标记位图尺寸的大小。
MFC提供了一种命令更新机制,想自己控制一个菜单项是否能使用,必须先在CMainFrame的构造函数中将m_bAutoMenuEnable设置为False。m_bAutoMenuEnable = FALSE后,MFC将不会去判断哪些项可用哪些项不可用,所有这些都要程序员自己去处理完成。
将整个菜单取消:SetMenu(NULL); 注意:
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME); SetMenu(&menu);
此处的menu是一个局部对象,会出现问题的。
Create a CMenu object on the stack frame as a local, then call CMenu’s member functions to manipulate the new menu as needed. Next, call CWnd::SetMenu to set the menu to a window, followed immediately by a call to the CMenu object’s Detach member function. The CWnd::SetMenu member function sets the window’s menu to the new menu, causes the window to be redrawn to reflect the menu change, and also passes ownership of the menu to the window. The call to Detach detaches the HMENU from the CMenu object, so that when the local CMenu variable passes out of scope, the CMenu object destructor does not attempt to destroy a menu it no longer owns. The menu itself is automatically destroyed when the window is destroyed. 所以在SetMenu后紧接着调用Detach函数menu.Detach();
MFC关于菜单项的命令更新机制:
对话框分为模态对话框和非模态对话框 模态对话框的创建使用DoModal()函数
要使得静态文本控件相应点击事件,必须将其原ID号(ID_STATIC)改变,并且要将其属性中的“样式”中的“通知”选项勾上(可以接收通知命令消息)
窗口从无到有的过程中会发送一个WM_PAINT消息,进行窗口重绘。 OnDraw函数传递的参数是一个CDC的指针,这样我们就可以直接调用CDC里封装的绘图相关函数。
按钮的caption字体改变:点击对话框的属性,对话框的属性中有一个font属性,会改变整个对话框中的文本字体!
对话框分为模态对话框和非模态对话框 模态对话框的创建使用DoModal()函数
要使得静态文本控件相应点击事件,必须将其原ID号(ID_STATIC)改变,并且要将其属性中的“样式”中的“通知”选项勾上(可以接收通知命令消息)
窗口从无到有的过程中会发送一个WM_PAINT消息,进行窗口重绘。 OnDraw函数传递的参数是一个CDC的指针,这样我们就可以直接调用CDC里封装的绘图相关函数。
按钮的caption字体改变:点击对话框的属性,对话框的属性中有一个font属性,会改变整个对话框中的文本字体!
正在阅读:
MFC学习笔记-匡桂明04-06
会计信息化 毕业论文05-14
超感人的语句02-11
专科模拟考试103-22
变电站(发电厂)综合自动化系统概述(精)05-17
《教育心理学》教案05-07
关于中国湿地保护的思考05-07
S版小学四年级语文下册教案05-07
数据库习题05-07
毕业论文(设计)开题报告(1)(1)05-07
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 笔记
- 学习
- MFC
- 北邮《管理学》网络作业
- 013福师《教育学》在线作业二
- 古诗文创作常用别称(整理好的比较全)
- 历年高考文科数学数列解答题集锦 - 图文
- 关于建立《涉农贷款专项统计制度》的通知银发246号
- 危险性较大分部分项工程管理控制措施和应急预案
- 组织行为学案例答案
- 2016-2022年中国鲜奶行业规模调查及十三五投资前景评估报告
- 法制科工作流程
- 中国近现代史纲要教案
- A106000《企业所得税弥补亏损明细表》填报详解
- 学习贯彻全国组织工作会议精神心得体会
- 古代汉语第二册翻译
- 2016 - 2017学年第一学期人教版三年级语文上册教学计划
- 湖州市科学技术协会 - 图文
- 春雨就像一个天真活泼的小姑娘
- 七年级下17周语文测试卷
- 论文 Word 文档
- 高考政治(上海卷)材料分析图表题答题指南与巩固练习 doc
- 2018年高考语文原创押题预测卷 02(新课标卷)(考试版)