//add comment at 20140226
//CWinApp 提供消息循环来检索消息,并将消息调度给应用程序的窗口
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance ();
};
//20140226
//框架窗口对象
class CMainWindow : public CFrameWnd
{
public:
CMainWindow ();
protected:
afx_msg void OnPaint ();
DECLARE_MESSAGE_MAP ()
};
#include <afxwin.h>
#include "Hello.h"
//add comment at 20140226
//一个MFC程序有且仅有一个应用程序对象,此对象必须申明在全局范围内有效
//END
CMyApp myApp;
/
// CMyApp member functions
//add comment at 20140226
//InitInstance 在应用程序还是运行以后,窗口创建之前调用
//除非InitInstance创建一个窗口,否则应用程序是不会有窗口的
/*
CWinApp::InitInstace是一个虚函数,默认操作仅包含一条语句
return True
InitInstance 是为应用程序提供一个自身初始化的机会。
由InitInstance返回的值决定了框架接下来要执行的内容
如果返回FALSE,将关闭应用程序
初始化正常返回TRUE, 程序继续运行
InitInstace是用来执行程序每次开始时都要进行初始化工作的最好的地方
*/
//END
BOOL CMyApp::InitInstance ()
{
m_pMainWnd = new CMainWindow;
m_pMainWnd->ShowWindow (m_nCmdShow); //m_nCmdShow 一般为SW_SHOWNORMAL
m_pMainWnd->UpdateWindow (); //除非使用WS_VISIBLE属性,否则窗口不可见
return TRUE;
}
/
// CMainWindow message map and member functions
/*
消息映射是一个将消息和成员函数相互关联的表
1.通过将DECLARE_MESSAGE_MAP语句添加到类申明中,申明消息映射
2.通过放置标示消息的宏来执行消息映射,相应的类将在对BEGIN_MESSAGE_MAP和END_MESSAGE_MAP的调用之间处理消息
3.添加成员函数来处理消息
*/
BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
ON_WM_PAINT ()
END_MESSAGE_MAP ()
CMainWindow::CMainWindow ()
{
Create (NULL, _T ("The Hello Application"));
}
//应用程序通过响应WM_PAINT消息绘制其窗口的客户区
//windows绘制宽口的非客户区
void CMainWindow::OnPaint ()
{
CPaintDC dc (this);
CRect rect;
GetClientRect (&rect);
dc.DrawText (_T ("Hello, MFC"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}