VC/MFC學習筆記

 windows中的很多數據類型,如HWND,WParam等其實都是我們所熟悉的unsigned int等一些類型,而定義成新的形式是爲了方便記憶,不要因爲這個而被難住!

消息隊列:把消息放在隊列中,應用程序每次都只取走消息隊列中的第一條消息。 HINSTANCE:窗口的實例,一個程序可以有多個實例。 調用每一個消息用函數GetMessage().

創建一個完整的窗口需要經過下面四個操作步驟: 設計一個窗口類; 註冊窗口類; 創建窗口; 顯示及更新窗口。

wndcls.style=CS_HREDRAW | CS_VREDRAW;CS_HREDRAW與CS_VREDRAW對應的二進制數中只有一位爲1,其他都爲0,因此,想要wndcls.style同時具有CS_HREDRAW 與CS_VREDRAW的特徵,就可利用二進制的或運算來進行。

DC是device context,叫做設備描述表:與設備驅動程序有關,比如顯卡,用DC去與設備驅動程序打交道.

BeginPaint與EndPaint是一對;

GetDC和ReleaseDC是一對.

 

MSDN:windows GDI/user interface platform SDK去查找

UNIT message 都是以WM_ 開頭的

在MFC中看不到WinMain函數是因爲它被隱藏在應用程序框架內部了。
一般的全局對象theApp是CWinApp的對象,它代表了一個應用程序。
應用程序的啓動:在C++中,全局對象在主程序被運行之前就已經被構造好了。
CWinApp::InitInstance成員函數會進一步調用相應的函數來完成主窗口的構造和顯示工作,我們必須在派生出的應用程序類中重載它,因爲CWinApp基類根本無法知道具體需要什麼樣的窗口。
CWinApp::Run函數被隱藏在基類中,WinMain在調用InitInstance之後將緊接着調用它。

 

視圖實際上是一個從MFC庫中的CView類所派生出的類的對象。
項目文件(.DSP)不但指定了所有文件之間的依賴關係,而且還定義了便宜和連接選項。

在MFC庫中,設備環境是由C++的CDC類對象來表示的,該對象被作爲參數(以指針的形式)傳遞給其他函數,比如OnDraw函數,就可以調用CDC的許多成員函數來完成各種各樣的繪製工作。

消息映射
如果程序需要對WM_LBUTTONDOWN消息有所反應的話,在視圖類中就必須包含和下面給出的函數想類似的成員函數:
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
 // event processing code here
}
在類頭文件中也必須包含相應的函數原型說明:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
記號afx_msg並沒有什麼其他的用途,它只是用來表明該原型說明是針對消息映射函數而言的。
下一步,在代碼文件中還需要有一個消息映射宏,該消息映射宏用於將OnLButtonDown函數和應用程序框架聯繫在一起:
BEGIN_MESSAGE_MAP(CEx04aView, CView)
 //{{AFX_MSG_MAP(CEx04aView)
 ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
最後,在類庫頭文件中還需要包含如下語句:
DECLARE_MESSAGE_MAP()

 

如何使用ClassWizard:P49

 

瀏覽應用程序:自己設置:Project-Settings-C/C++選中Generate Browse Info,在Browse Info上選中Build Browse Info File

在MM_TEXT映射模式下,座標被影射到了象素,x值向右方遞增,y值向下遞增,但可以通過調用CDC的SetViewprotOrg和SetWindowOrg函數來改變座標原點的位置。


類CDC是設備環境類的基類,它的兩個派生類:CClientDC和CWindowDC,前者的區域是不包括窗口邊框和標題欄等,而後者就包括。
構造設備環境類很重要的一點就是要在合適的時候將它刪掉,方法主要有兩種:
一種是在堆棧中構造對象,也就是在局部函數中構造,這個函數調用完就自動釋放了;
另外一種是通過GetDC RealeaseDC成對的創建和釋放DC。

P92教如何做對話框
對齊控件方法在P97

 

在對話框編輯欄中,如果一個按鈕對這些數據進行操作,在這個操作對應的函數中,要包含如下代碼:

 

關於DLL的使用

MFCDLL分爲擴展的和正規的,擴展的可以導出類,正規的不可以,理解上,如果我們想將該DLL用於C++,就用擴展的,否則就用正規的,一般我們都是用MFC擴展的DLL

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章