有了一定的windows32程式設計知識,就能學習mfc了。
在學習mfc之前,一定要弄明白windows32程式設計中的訊息迴圈是怎麼回事。mfc實際上就是對windows api函式的封裝。
在windows程式設計程式設計中,建立乙個視窗要經歷下面四個過程 (如有不懂,請看部落格 win32初窺)
1設計乙個視窗類;
2註冊視窗類;
3建立視窗;
4顯示及更新視窗。
同樣,mfc中也是一樣的。只是封裝了而已,很多人認為mfc很難學,看著書本能程式設計序,但是卻編寫不了自己的程式,為什麼呢?因為還沒有理解mfc的原理的機制。
市場上有很多有關vc++的書本,但是很少有將mfc原理講得比較透徹的,引用孫鑫老師的話。
什麼都不用做,直接用嚮導生成乙個mfc視窗。
下面是結構圖,有五個類
下面看看mfc中類的主要繼承關係:
由於繼承樹太大,這裡只羅列了cwnd的繼承關係
api中createwindowex和createwindow幾乎是一樣的,ex表示擴充套件,多了乙個引數
下面是重頭戲(引用了某位仁兄的,太詳細了)
建立按鈕
1在cmainframe建立
雙擊cmainframe,新增資料成員,cbutton m_btn
在oncreate方法新增如下**:
[html]view plain
copy
print?
m_btn.create(text("first button"),bs_pushbutton|ws_child,crect(0,0,100,100),this,123);
m_btn.showwindow(sw_normal);
m_btn.create(text("first button"),bs_pushbutton|ws_child,crect(0,0,100,100),this,123);
m_btn.showwindow(sw_normal);
2在cxxview建立雙擊cxxview,新增資料成員,cbutton m_btn在cxxview右鍵add windows message handler 新增wm_create訊息處理,然後生成oncreate函式在oncreate函式新增如下**[html]view plain
copy
print?
m_btn.create(text("button2"),bs_pushbutton|ws_child|ws_visible,crect(0,0,100,100),this,123);
m_btn.create(text("button2"),bs_pushbutton|ws_child|ws_visible,crect(0,0,100,100),this,123);
兩個**效果是等價的: 學習筆記 雜湊學習筆記
hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...
學習筆記 CentOS 學習筆記01
簡單的做個課堂筆記 虛擬機器用的是vmware,系統是centos cd etc sysconfig network scripts pwdls 顯示列表 cat ifcfg eth0 檢視檔案內容 vi ifcfg eth0 進入vi編輯器 onboot no 原始設定 x逐字刪除 d刪除整行 a...
筆記 spring cloud 學習筆記
1 spring cloud 是什麼 spring cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具 例如配置管理,服務發現,斷路器,智慧型路由,微 控制匯流排 分布式系統的協調導致了樣板模式,使用spring cloud開發人員可以快速地支援實現這些模式的服務和應用程式。他們將在任...