MFC(对win32的封装)

MFC本质是对win32的封装 感觉和delphi好像
MFC的初始化过程
声明全局的应用程序对象,全局变量和全局对象总是在任何其他代码前执行
使用类视图快速添加类
CWinApp的层次结构
CFramWind的层次结构
MFC如何使用应用程序函数

一.MFC程序的初始化
  • 1.基于MFC的窗口程序必须也只能有一个由从CWinApp派生的对象
  • 2.我们必须覆盖CWinApp的虚函数Initlnstance在里面创建窗口,并把窗口对象保存在它的成员变量m_pMainWnd
  • 3.创建窗口是通过派生CFrameWnd对象,在它的构造函数里面调用成员函数create

手动编写MFC程序的几个注意事项:
1.使用win32 application去创建工程
2.包含MFC(project-setting-General-use mfc in static)
3.使用头文件afxwin.h

全局变量和全局对象总是在任何其他代码前执行
全局对象的建构会比程序入口点更早所以CWinApp对象的构造函数将早于WinMain二WinMain又广泛使用应用程序对象,这就是为什么应用程序对象必须做全局声明的原因

二.MFC运行时类型识别(RTTI)
三.MFC动态创建

动态创建基本上和C++的new运算符创建没有区别,但是它回避了C++语言中不让如下语言句执行的缺点
char* className=“MyClass”
Cobject* object new className

四.消息映射

消息映射是MFC内建的一个消息分派机制,只要利用数个宏以及固定形式的写法,类似于填表格,就可以让我们的框架知道,一旦消息发生,该往哪一个类去传递,每一个类只能拥有一个消息映射表格,也可以没有
MFC三大类消息
1.标准消息
任何以WM打头的消息都属于标准消息(除WM_COMMAND)以外
2.VM_COMMAND命令消息
这是来自菜单、工具条按钮、加速键等用户接口对象的WM_COMMAND通知消息,属于应用程序自己定义的消息。通过消息映射机制,MFC框架把命令按一定的路径分发给多种类型对象(具备消息处理能力)处理,如文档、窗口、应用程序、文档模板等对象。能处理消息映射的类必须从CCmdTarget类派生
3.控件通知
通常,控件通知在某些重要事件发生时,Y由控件窗口发送到父窗口,如打开一个组合框控件通知为父窗口进一步控制子窗口提供了机会。例如,打开一个组合框时,父窗口可以使用组合框初建时得不到的消息填充它

五.命令传递
1.定义:

消息按照规定的路线游走于各个对象之间,知到找到它的消息处理函数,如果找不到,则最终把它交给 ::DefWindowPro函数去处理

2.消息的传递:

1.CWND::Windows相当于win32的窗口函数
2.只要是CWND派生类,就可以拦截下任何windows消息,与窗口无关的类(CWinApp)如果也想处理消息必须派生字CCmdTarget并且只能接收到WM_COMMAND心消息
3.命令查找方式大致为二种
(1)一般的windows消息通过最底层的消息映射表向上查找,直到找到对应的函数为止,如果最终没有查找到,则调用默认的窗口过程处理函数
(2)WM_COMMAD(WM_NOTIFY类似)则是兵分三路去查找CView CfFrame CwinApp

六.GDI
1.GDI图形设备接口

windows中负责图形输出的是Graphics Device Interface(图像设备接口)。它为应用程序提供了可调用的多种服务,这些服务一起构成了强大和通用的图形编程语言

2.DC设备描述表

当windows程序在屏幕,打印机或者其他输出设备上画图时,它并不将像素直接输出到设备上,而是将图绘制到设备描述表dc表示的逻辑意义上的显示平面上去,它是windows中的一种数据结构,包含GDI需要的所有关于显示平面情况的描述。
1.MFC的CDC类将DC和HDC的GDI函数就近封装到了一起,派生了四个不同场景下的DC类,以下是常用的三个
CPainDC用于在窗口客户区画图(仅限OnPaint)处理程序
CClientDC用于在窗口客户区画图(除了OnPaint外的任何处理程序)
CWindowDC用于在窗口内任意地方画图包括非客户区

六.鼠标和键盘消息
七.对话框

模态对话框和非模态对话框

八.对话框
九.mfc控件
十.mfc文件和资源操作
十一.mfc多页面设计
发布了42 篇原创文章 · 获赞 17 · 访问量 4990

猜你喜欢

转载自blog.csdn.net/weixin_45055269/article/details/104188279