一、建立程式
在安裝了MFC程式開發元件後,點選建立
因為剛開始學習,筆者使用的使用如下配置
于此處建立生成的類:
會自動生成四個主要的大類:
- MFC的文檔結構:是一個類,用來存儲資料
- MFC的視圖結構:是一個類,用來顯示和修改資料
- MFC的架構類:一個容器,這個容器裝了視圖
- MFC的項目工程類:是整個項目入口
二、大緻結構
通過類視圖會更容易看一些。
若沒有可以通過下圖調出視圖。
該類一般為程式資訊。
CAPP
該類為程式入口位址
檢視其下的InitInstance()函數,可以發現,和前幾篇中代碼類似,隻是嵌套了更多的方法。
也可以在此處找到,繪制最初視窗的方法。
CMainFrame
OnCreate(LPCREATESTRUCT lpCreateStruct)與PreCreateWindow(CREATESTRUCT &cs)函數位于CMainFrame中,
我們已經知道WinAPI是通過CreateWindow()建立,而PreCreateWindow則是在CreateWindow之前先調用。當CreateWindow調用完成後,産生WM_CREATE信号,最終調用OnCreate。
Cview
在view中,可以找到OnDraw(CDC*pdc)函數。當OnDraw與OnPaint同時存在時,隻有OnPaint有效。
OnPaint是WM_PAINT的消息處理函數,最終它會執行OnDraw。
為其添加一行代碼,
可得到
三、添加消息
通過對CMainFrame類右鍵後,點選屬性。
可以檢視所有消息
通過選中後添加,即可找到對應的消息,消息處理函數的聲明以及實作。
編寫如下代碼。注意,此處我們建立事件的位置是架構上,當我們點選視窗時,會發現,無法彈出消息。
void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息處理程式代碼和/或調用預設值
MessageBox(_T("滑鼠左鍵點選!"));
CFrameWnd::OnLButtonDown(nFlags, point);
}
再在視圖中通過相似操作建立滑鼠左鍵點選事件。
void CMFC程式View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息處理程式代碼和/或調用預設值
MessageBox(_T("左鍵點選"));
CView::OnLButtonDown(nFlags, point);
}
可得到彈窗,由此可知,視圖覆寫了架構。
删除可以直接在添加處将其移除,注意隻是添加了注釋,代碼内容可以随時還原。
四、字元集
為了不去考慮不同字元集的位元組占位置問題,MFC會自動适應目前使用的字元集。
TCHAR:就是其字元類型,它的本質是一個條件編譯。
TEXT()或_T()則是用來将其中的文字定義為TCHAR。
五、其他
CWnd:所有視窗類的父類。MessageBox隻有其派生類可用。
afx_XXX:一般為全局函數,不屬于某個類。
XXXEx,XXXW:一般為拓展函數。