先来了解几个类
1、CObject类
有相当一部分类的基类是CObject类(比如CCmdTarget,CWnd,CFrameWnd)。它具有一些窗口类比较基础的功能:程序调试诊断信息输出通用功能,并且还对运行期对象类型识别、对象的动态创建、对象的序列化提供了相应的支持。
2、CCmdTarget类
MFC在这个类中封闭了窗口函数,因此,凡是希望具有处理windows消息的能力的类都必须以CCmdTarget类或其派生类为基类来派生。
给一个大概的示例:
class CCmdTarget
{
public:
int AfxWndProc(HWND, UINT,
WPARAM, LPARAM );
void On_LButtonDown(HWND, UINT,
WPARAM, LPARAM );
void On_Paint(HWND, UINT,
WPARAM, LPARAM );
void On_Destroy(HWND, UINT,
WPARAM, LPARAM );
};
int CCmdTarget::AfxWndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_LBUTTONDOWN:
On_LButtonDown(hWnd, message, wParam, lParam);
break;
case WM_PAINT:
On_Paint(hWnd, message,wParam, lParam);
break;
case WM_DESTROY:
On_Destroy(hWnd, message, wParam, lParam);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
void CCmdTarget::On_LButtonDown(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
ShowText="Hello! Hello!";
InvalidateRect(hWnd,NULL,1);
}
void CCmdTarget::On_Paint(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc,50,50,ShowText,14);
EndPaint(hWnd, &ps);
}
void CCmdTarget::On_Destroy(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
PostQuitMessage(0);
}
//窗体类-----------------------------------------------------------------------------------------
class CFrameWnd:public CCmdTarget //这个窗体类是继承它的
{
public:
HWND hWnd;
int RegisterWindow();
void Create(LPCTSTR lpClassName,
LPCTSTR lpWindowName
);
void ShowWindow(int nCmdShow);
void UpdateWindow();
};
当然MFC中的原代码可能不是这样的,有兴趣可以自己去查查看
3、CWnd类
继承自CCmdTarget。Windows把应用程序窗口界面上的许多图形元素,如:控制栏、对话框、视图、属性页和控件等都当作是子窗口。这些都是继承自CWnd类。
4、CFrameWnd类
它是一个特殊的CWnd类,它或它的派生类对象要承担应用程序主窗口的任务,所以它除了CWnd类一些通用的功能外,还有一 些特殊功能 。
/////////////////////////////////////////////
以上四个类从上到下构成了一个继承图。
///////////////////////////////////////////////
5、CWinApp类
MFC希望把主函数封装成一个类,于是本类就诞生了。这个类区别于上面CWnd和CFrameWnd类,该类主要是用来实现WinMain功能的,在它里面实例化了CFrameWnd类,用它来创建窗口。该类继承自CWindThread,线程类,如下图所示,之所以要在CCmdTarget和CWndApp中间插入这个类主要是为了支持Windows多线程工作方式,该类中封装了一些用于线程管理的功能函数。
值得程序员注意的是,MFC把原来在CWinApp类中定义的CWnd*类型的数据成员m_pMainWnd定义在CWinThread中,所以在CWinApp中看不到这个成员。
CWinApp类中有三个可以重写的虚成员函数:InitApplication( ), InitInstance( )和Run( )。其中InitInstance( )是程序创建窗口和显示窗口所设置的。
下文将给出MFC的一些较简单的实例。。。
- 大小: 19.3 KB
分享到:
相关推荐
MFC学习笔记
MFC学习笔记(onenote格式),一个朋友参加MFC培训,其教师在讲课过程中做的学习日记。图文并茂,是初学者很好的学习资料。
C++、MFC学习笔记!
MFC学习笔记.docx 自己的学习笔记。
这是一个关于 MFC菜单操作学习笔记 的资源,有需要的朋友下载阅读。
这是MFC的学习笔记,很好的。比较容易入门。
价值20000元达内win32加MFC学习笔记.
本人自学MFC期间的学习笔记,分类详细,适合初学者
Visual_C++MFC学习笔记,在你一边听视频一遍查找笔记中的内容,学习C++ MFC会更容易些。
本人从零开始学C++/MFC的时候,积累和整理的学习笔记,其中有大部分常见问题和处理办法,看过很过帖子,也查过很多资料,最终把他们记录下来。 Demo内容: ★ ::OnTimer OnTimer()函数用于实现定时控制功能,定时...
达内MFC课程完整笔记
C++ MFC 学习笔记 对初学者有很大提高
声明:所有代码和程序仅作为参考,各位可自由使用,出现一切后果自负。 博文地址:http://blog.csdn.net/shortcoder/article/details/16370697
MFC学习笔记--案例--销售系统,txt文件存储,格式固定,文件内容增加、删除、修改等,简单控件的使用,文本框,下拉框,表格,界面切换等,缓存,方便以后复习
7.16基于对话框编程对话框是一种特殊类型的窗口,绝大多数Windows程序都通过对话框与用户进行交互 2.1 创建基于对话框的 MFC 应用程序框架程序的创建
学习mfc入门参考,看看吧有点用
MFC的学习笔记,从windows API处理,消息响应机制,MFC框架,MFC内部机制,到MFC控件,MFC类库使用,多线程,DLL,数据库等
深入浅出MFC_简体中文版_侯捷 + 深入浅出MFC笔记(配合原书的好笔记)