MFC Windows 程序开发究竟是什么
从GUI快速入手MFC
- Windows操作系统顾名思义就是窗口的意思,开发Windows应用程序,就是组织一个又一个的"窗口"!
- MFC应用程序就是MFC的C++库进行这一系列"窗口"的开发 .正如我们掌握的printf,fopen进行C语言开发一样,我们需要知道MFC为我们提供哪些针对这些"窗口"的对象.
MFC Windows 应用程序开发的核心概念
- 在Windows 应用窗孔中,窗口是通过窗口句柄(HWND)来标识的. 我们要对某个窗口进行操作,首先就要得到这个窗口的句柄. 在Windows程序中,有各种各样的资源(窗口,图标,光标,画刷等),系统在创建这些资源时会为他们分配内存,并返回标识这些资源的标识号,即句柄.句柄就是Windows对象的身份证.
- 一句话的经验:MFC开发Windows应用就是对一个个MFC对象的熟悉,改造过程-- MFC对象就是把一个个Windows对象编程了易于标准化程序开发的C++对象
详细映射
从Windows对象到MFC对象
-
**消息映射从语义上看就是事件驱动编程,从语法上是一个将详细和成员函数相互关联的表.**比如,框架窗口接收到一个窗口绘制消息,MFC将搜索该窗口 的消息映射,如何粗在一个处理WM_PAINT的详细的处理程序,然后就调用OnPaint.
-
MFC为只想消息映射在内部所作的工作隐藏在某些十分复杂的宏
-
通过
DECLARE_MESSAGE_MAP
添加到类声明中,声明消息映射. -
通过放置标识消息的宏来执行消息映射,相应的类将在对
BEGIN_MESSAGE_MAP
和EBD_MESSAGE_MAP
的调用之间处理消息. -
添加成员函数来处理消息
//框架窗口类 class MainWindow : public CFrameWnd //这是一个C++对象表面的Windows窗口 { CButton* pBtn; public: MainWindow(); afx_msg void HandleButton(); //加入消息循环,让MFC框架完成让Windows消息映射到成员函数的过程 DECLARE_MESSAGE_MAP() }; BEGIN_MESSAGE_MAP(MainWindow, CFrameWnd) ON_BN_CLICKED(10002, HandleButton) END_MESSAGE_MAP() void MainWindow::HandleButton() { ::MessageBox(NULL,TEXT("Hello"),TEXT("MFC"), MB_OK); }
-
总结
- MFC封装了Windows对象形成一个个C++对象
- 消息映射王城了这些C++对象与Windows消息的对应关系,形成了成员函数
- 程序员只需关注业务逻辑,把这些逻辑编码到这些成员函数,完成业务系统.
评论区