討厭VB,可是發現用VB寫了一堆又一堆的程式,做了一個又一個的小項目...
想學JAVA,可惜只在公司的兩個月全心學了一段後就沒什麼機會再說了...
原先覺得MFC都沒什麼前途了,那麼,我怎麼現在又來學它了呢?嗯,一個是和以後工作有關,以後的工作,肯定離不開D3D和WINSDK,而如果在WIN下面編程,不學MFC也太沒意思了. 二是如果稍微做大一點的東東,用SDK寫更痛苦,還不如用MFC方便.三是學MFC苦了一些,不過,就當是給自已加加壓吧,不然用C#拖兩下介面,再和C寫個或者下載個影像處理的DLL,好像做完了畢設和沒做感覺差得不大呀... 所以,乾脆自已苦自已吧:)
學東西還是蠻快樂的,今天雖然沒有學習一整天,但是,確實很充實,好像好久沒有這種感覺嘍,和小白happy太長時間了,心要收回來,還真不容易.剛收的時候,確實挺無聊的,不過,回到了軌道上以後,又有了新的樂趣,新的牽掛,新的玩意....灌水,遊戲,BLOG,看文章,和朋友聊天,學技術...
嗯,把摘的一些東東放上來,有空也可看看,學習MFC,最好的方法,還是看代碼,然後一邊先看範一點的書,一開始就進入那些細節,簡直看天書,那就是第一天看MFC的感覺.現在還好,大概能看明白那些東東,起碼不會被那BT的變數嚇到了:)
在MFC中M$引入了文檔-視結構的概念,文檔相當於資料容器,視相當於查看資料的視窗或是和資料發生互動的視窗。(這一結構在MFC中的OLE,ODBC開發時又得到更多的拓展)因此一個完整的應用一般由四個類組成:CWinApp應用類,CFrameWnd視窗架構類,CDocument文檔類,CView視類。(VC6中支援建立不帶文檔-視的應用)
在程式運行時CWinApp將建立一個CFrameWnd架構視窗執行個體,而架構視窗將建立文件範本,然後有文件範本建立文檔執行個體和視執行個體,並將兩者關聯。一般來講我們只需對文檔和視進行操作,架構的各種行為已經被MFC安排好了而不需人為幹預,這也是M$設計文檔-視結構的本意,讓我們將注意力放在完成任務上而從介面編寫中解放出來。
在應用中一個視對應一個文檔,但一個文檔可以包含多個視。一個應用中只用一個架構視窗,對多重文件介面來講可能有多個MDI子視窗。每一個視都是一個子視窗,在單一文件介面中父視窗即是架構視窗,在多重文件介面中父視窗為MDI子視窗。一個多文檔應用中可以包含多個文件範本,一個模板定義了一個文檔和一個或多個視之間的對應關係。同一個文檔可以屬於多個模板,但一個模板中只允許定義一個文檔。同樣一個視也可以屬於多個文件範本。(不知道我說清楚沒有)
接下來看看如何在程式中得到各種對象的指標:
全域函數AfxGetApp可以得到CWinApp應用類指標
AfxGetApp()->m_pMainWnd為架構視窗指標
在架構視窗中:CFrameWnd::GetActiveDocument得到當前使用中文件指標
在架構視窗中:CFrameWnd::GetActiveView得到當前活動視指標
在視中:CView::GetDocument得到對應的文檔指標
在文檔中:CDocument::GetFirstViewPosition,CDocument::GetNextView用來遍曆所有和文檔關聯的視。
在文檔中:CDocument::GetDocTemplate得到文件範本指標
在多重文件介面中:CMDIFrameWnd::MDIGetActive得到當前活動的MDI子視窗
一般來講使用者輸入訊息(如菜單選擇,滑鼠,鍵盤等)會先發往視,如果視未處理則會發往架構視窗。所以定義訊息映射時定義在視中就可以了,如果一個應用同時擁有多個視而當前活動視沒有對訊息進行處理則訊息會發往架構視窗.
ODBC: Open DataBase Connectivity
MFC ODBC: Microsoft Founddation Class ODBC
DAO : Data Access Object
OLE DB : Object Link and Embedding DataBase