学习WIN SDK编程有几个月了,今天终于进入了MFC的范围,思考了很久,决定拿《MFC WINDOWS程序设计》作为我的入门教程,选择它的原因主要是它够简单。
Hello.h
class CMyApp : public CWinApp {
virtual BOOL InitInstance();
};
class CMainWindow : public CFrameWnd {
public:
CMainWindow();
protected:
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
};
|
Hello.cpp
#include <afxwin.h>
#include "Hello.h"
CMyApp myApp;
BOOL CMyApp::InitInstance() {
m_pMainWnd = new CMainWindow;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
BEGIN_MESSAGE_MAP(CMainWindow, CFrameWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
CMainWindow::CMainWindow() {
Create(NULL, _T("hello world"));
}
void CMainWindow::OnPaint() {
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
dc.DrawText(_T("hello mfc!!!!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
|
最初看这段代码是相当怪的:
首先,没有main(WinMain)函数, 作者直接从CWinApp继承,把main函数也当作一个类给封装起来了,这是比较怪的。
然后,没有看到怎样进行消息映射,没有while循环,没有TranslateMessage与DispatchMessage这样的函数,或者类似的操作,一切都被封装了,很怪,它到底是怎么运行的。
再次,把消息驱动与窗口合并到了一起,这个窗口接收什么消息,没有hwnd, hInstance这些数据成员,怎么调用的啊?哈哈,有点怪。
总之,封装得太狠了。
阅读(1499) | 评论(0) | 转发(0) |