【MFC Windows程序设计(第二版)】第一章代码注释。
来源:互联网 发布:网络升级访问紧急通知 编辑:程序博客网 时间:2024/05/22 08:18
/*CMyApp继承了CWinApp类,因此它就是应用程序对象。CWinApp类提供消息循环和调度。一个MFC应用程序可以有且仅有一个应用程序对象。此对象必须在全局声明内有效。*/class CMyApp:public CWinApp{public:virtual BOOL InitInstance();/* 上面这个函数是从CWinApp覆盖的,CWinApp本身具有这个函数,我们的类在此继承了这个函数 */};class CMainWindow: public CFrameWnd{public:CMainWindow();protected:afx_msg void OnPaint();DECLARE_MESSAGE_MAP ();};
Hello.h ↑
Hello.cpp↓:
#include <afxwin.h>#include "Hello.h"CMyApp myApp;//看到了么,结合头文件的注释/*myApp就是CMyApp的实例,而这个实例必须是全局范围内有效的,因此我们声明其为全局变量。*/BOOL CMyApp::InitInstance(){/* 这个函数就是刚才提到的,从CWinApp继承过来的函数的具体实现。虚函数(Virtual function)。请注意!这个函数是CWinApp自身拥有的,由于继承关系,CMyApp才有了这个函数。这个函数的调用非常之早,是在应用程序开始之后而窗口被创建之前,可以看到,下面的操作全是窗口操作。Pdf 16,Page 35/1187事实上,除非InitInstance创建一个窗口,否则应用程序是不会创建窗口的。这就是为什么就算是最小的MFC应用程序也必须从CWinApp类派生出一个类并覆盖CWinApp::InitInstance()这个函数。在CWinApp(不是这里的CMyApp!)中,InitInstance是一个虚函数。只有一句return TRUE。这个函数的目的是给应用程序一个初始化的机会。由该函数返回的值决定了应用程序框架的下一步动作。如果该函数返回FALSE,那么应用程序将被关闭。如果初始化正常,那么就返回TRUE,应用程序将继续执行。这个函数是执行初始化的地方。在这里,这个工作就是创建一个窗口。*/m_pMainWnd = new CMainWindow;/*这里,实例化CMainWindow类来创建一个窗口。这里创建了一个CMainWindow对象将其地址复制到了应用程序对象的m_pMainWnd数据成员里面。在窗口创建之后,InitInstance就会通过CMainWindow指针调用ShowWindow和UpdateWindow来显示它。*///m_pMainWnd->ShowWindow(argument lists....);//m_pMainWnd->UpdateWindow(argument lists....);/*ShowWindow和UpdateWindow是所有窗口对象共用的CWnd成员函数。其中就包括了CFrameWnd,而CMainWindow就是从CFrameWnd派生出来的。这些函数几乎就是对同名API函数的包装。*//*如果你想在MFC应用程序中调用一个WIN API函数,那么需要在函数名称前面加一个“::”标示符。比如::UpdateWindow(argument lists...)这个是保证即便对象有同名的函数,也可以调用API函数。其他代码中的调用都是这么写的。*//*ShowWindow只接受一个参数,用来表示窗口显示的情况,是最大化,还是最小化还是怎么样。这里直接传递m_nCmdShow是根据Windows App设计协议中的规定这里的m_nCmdShow通常是SW_SHOWNORMAL来做的。*/m_pMainWnd->ShowWindow(m_nCmdShow);/* UpdateWindow是来重绘窗口完成ShowWindow的启动作业的。*/m_pMainWnd->UpdateWindow();/* 完成后,InitInstance返回TRUE让应用程序继续执行。*/return TRUE;}BEGIN_MESSAGE_MAP (CMainWindow,CFrameWnd)ON_WM_PAINT()END_MESSAGE_MAP()CMainWindow::CMainWindow(){/* 在这里,框架窗口创建了一个窗口对象。其方法就是通过调用Create函数。 _T这个函数负责将字符串转化为中性。Create是CFrameWnd继承来的一个CMainWindow成员函数。 在CFrameWnd中,由它自己定义的和从CWnd继承来的函数大约有20个。Create就是其中之一。CFrameWnd::Create的原型参见书中P19。*/Create(NULL,_T("The Hello Application"));};/* 这个函数负责响应WM_PAINT消息。具体参见P21*/void CMainWindow::OnPaint(){CPaintDC dc(this);CRect rect;GetClientRect(&rect);dc.DrawText(_T("Hello,MFC"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);}
- 【MFC Windows程序设计(第二版)】第一章代码注释。
- MFC Windows程序设计(第二版)第一章笔记
- MFC Windows程序设计学习笔记(第一章)
- MFC Windows程序设计读书笔记第一章
- MFC Windows程序设计(第二版)精华浓缩笔记
- MFC Windows程序设计(第二版)精华浓缩笔记
- 模式对话框和非模式对话框的区别(出自<MFC windows程序设计>第二版p370)
- C程序设计(第二版 新版)第一章 习题
- C++程序设计(第二版)第一章学习笔记
- Lua程序设计第二版(笔记) 第一章开始
- MFC Window程序设计(第二版)精华浓缩笔记(二)
- MFC Window程序设计(第二版)精华浓缩笔记(三)
- MFC Window程序设计(第二版)精华浓缩笔记(二)
- MFC Window程序设计(第二版)精华浓缩笔记(三)
- MFC Window程序设计(第二版)精华浓缩笔记(二)
- windows程序设计学习笔记(第一章)
- 第一章 Windows程序设计基础
- 《Windows程序设计》第一章 起步
- usaco 2.3 money
- 第三章课后第三题
- Windows环境下Unicode编程总结
- JDBC调用PL/SQL函数
- IP Helper API 简介
- 【MFC Windows程序设计(第二版)】第一章代码注释。
- Win2003自动登陆方法
- SHChangeNotify函数的声明
- 从30岁到35岁:为你的生命多积累一些厚度
- 使用Win7连接虚拟机linux中的telnet出错解决方法
- ORACLE 10g 升级补丁(Patch)
- 编写断点续传和多线程下载模块
- [算法]输出9*9 口诀
- 用API使计算机休眠或待机