1樓:匿名使用者
樓主的問題已經好多人回答了,鑑於自己上學時也在這些問題上糾結過,忍不住也想恢復下 ^_^
樓主應該開啟過 vc 這個軟體吧,你可以看一下新建工程的時候,有好多專案型別可以選擇,例如,win32應用程式,win32控制檯,mfc應用程式等等,所以 vc 只是一個開發環境,你可以選擇使用mfc,也可以選擇不使用mfc寫你的軟體。mfc是微軟提供的一套類庫,是一個類的集合,統稱mfc,樓主學過資料結構的話,應該知道連結串列,佇列,map等等這些東西,c語言裡用char*,c++裡用string表示字串,mfc對這些都有自己的封裝 carray,cmap,cstring等。
但是,mfc重要且常用的一部分是對視窗的封裝。cwnd,cdialog,cbutton等等。我們拿軟體上的按鈕來說,不適用mfc,直接用win32 的api 函式來建立,我們要用createwindow函式先建立出來,還要計算按鈕的大小,位置等等。
但是用mfc,我們想建立一個按鈕,直接在工具箱裡拖到介面上,調整位置和大小也就是動動滑鼠的事,一句**不用寫就出來了。這也是mfc的優越之處。
那麼,我們一般說的 windows 程式設計,和 mfc 程式是什麼關係呢?其實,一般我們說的windows程式就是不使用mfc類庫裡的東西,直接用 api 寫的程式,顯而易見,我們建立一個按鈕就需要寫函式,計算位置等等這些過程,要是建一個複雜的介面,肯定要寫很多**。mfc的程式當然就是使用了mfc的程式了。
mfc 關於視窗這一塊的封裝,其實就是封裝的 win32 api。像mfc裡cwnd這樣的視窗類,最後還是呼叫的 api 函式 createwindow,只是微軟為了方便開發人員快速的開發軟體,幫我們處理了,藉助 vc 和 mfc 給我們一個所見即所得環境。
直接用 win32 api 程式設計類似於 c 語言的程序導向程式設計,還是因為mfc為了方便我們開發,通過一些封裝等手段,使得我們開發應用程式,能以物件導向的方式開發了。
c++重要的地方在於這種物件導向的思想,mfc又何嘗不是c++思想的一個實現?我們用c語言程式設計,顯示一個東西用 printf,在c++裡可能用 cout 這些函式還不都是 c,或者c++ 的庫提供給我們的? 在vc下開發,別管用不用mfc,只要包含了 c 或者 c++ 的標頭檔案,連結了庫檔案,都是可以使用的。
雖然 mfc 提供了這麼方便的開發方式,但是在方便的同時,mfc隱藏的細節太多,使我們看不清程式後面的機制了,上面說,mfc是對 win32 api 的封裝,所以要想清楚的知道視窗是怎麼出來的,又是怎麼響應使用者的,還是要從 windows 程式設計開始。
個人推薦,先看,windows程式設計,再學習mfc,起碼先把windows程式設計關於建立視窗,訊息處理搞明白以後再看mfc,既然mfc封裝的就是這些東西,你把mfc底層的細節瞭解一二了,還怕學不會mfc? 希望能幫到樓主 ^_^
2樓:
1、microsoft visual c++,(簡稱visual c++、msvc、vc++或vc)微軟公司的c++開發工具,具有整合開發環境,可提供編輯c語言,c++以及c++/cli等程式語言。vc++整合了便利的除錯工具,特別是整合了微軟視窗程式設計(windows api)、三維動畫directx api,microsoft .net框架。
目前最新的版本是microsoft visual c++ 2010。
2、mfc(microsoft foundation classes),是一個微軟公司提供的類庫(class libraries),以c++類的形式封裝了windows的api,並且包含一個應用程式框架,以減少應用程式開發人員的工作量。其中包含的類包含大量windows控制代碼封裝類和很多windows的內建控制元件和元件的封裝類。
3、關係:現人們提到mfc多指介面程式。可在visual c++中用mfc型別的程式簡便地實現介面設計。
3樓:匿名使用者
mfc只是vc中的一個類
vc中的mfc 到底是什麼?
4樓:匿名使用者
怎麼說,mfc這個東西在我學的初期著實把我鬱悶了一會。
不過,你要理解mfc是在c++基礎上的類庫。在你用createwindow wndproc winmain這些函式的時候,你會不會發現步驟太繁瑣了?簡單的幾個窗體你就要寫很多的**,所以,為了提高開發效率。
微軟就將api封裝成了類庫,例如cframe 這個用於構建視窗的類,在這個類中,全部是有由你熟知的win32 api來構成了。簡單的說,mfc的作用:縮短開發效率,將api歸類,用提前寫好的類庫來代替不斷重複的步驟。。
但是,有缺點、你要是習慣sdk來開發你就完全不知道這個mfc用簡簡單單幾行的**就能完成用sdk幾十行的效率。所以,這正是我們需要去探索mfc的實現,如何封裝。這,即是《學習mfc》。
你要知道不懂mfc的封裝結構是不會學好mfc的。
(雖然我不怎麼喜歡mfc,總感覺是雞肋)
5樓:暗影之王
微軟基礎類庫(英語:microsoft foundation classes,簡稱mfc)是一個微軟公司提供的類庫(class libraries),以c++類的形式封裝了windows api,並且包含一個應用程式框架,以減少應用程式開發人員的工作量。其中包含的類包含大量windows控制代碼封裝類和很多windows的內建控制元件和元件的封裝類。
mfc中最重要的封裝是對win32 api的封裝,因此,理解windows object和mfc object (c++物件,一個c++類的例項)之間的關係是理解mfc的關鍵之一。所謂windows object(windows物件)是win32下用控制代碼表示的windows作業系統物件;所謂mfc object (mfc物件)是c++物件,是一個c++類的例項,這裡(本書範圍內)mfc object是有特定含義的,指封裝windows object的c++ object,並非指任意的c++ object。
6樓:匿名使用者
微軟基礎類庫,microsoft foundation class.
為了減少**編寫,微軟把一些常用的類封裝在一個庫裡,供大家公用,呼叫。即mfc。
編好的c++**與mfc到底是什麼關係,我怎麼實現?
7樓:西子醉
mfc提供物件導向的框架,程式開發人員可以利用這一框架建立windows應用程式。
mfc按照c++類的層次結構組織在一起。
microsoft在windows api的基礎上封裝了一組c++的類,並以c++庫的方式提供,這將能夠使程式設計師的工作更容易,它就是microsoft基本類庫(mfc),該庫的主要優點是效率高,它減少了在建立windows 程式時必須編寫的大量**,同時還提供了所有利用c++程式設計的優點,例如繼承和封裝等。
形象說:如果你要造木船,c++類比為樹,mfc為樹經過加工的木板。造船的時候,直接用木板了,但原料還是由樹來的。
8樓:
1、c++ 是一門計算機語言,也就是一種表達人類思想給計算機的方式。
2、mfc 是microsoft foundation classes 的縮寫,中文是微軟基礎類庫。所以,mfc 是微軟公司用 c++ 這門語言結合 windows 作業系統來寫出的一個類庫,其中有很多c++類可以供人直接使用,加速了一般的程式開發(因為你不必寫一些重複的繁瑣**)。
對於 mfc 如何對點選"yes"和"no"做出判斷,涉及到mfc的內部實現,mfc的原始碼在vc++相應目錄下都有,樓主可以察閱。不過,這個必須要有深厚的c++功底和windows 作業系統api功底才能看懂,樓主需要深入研究才能弄清楚其原理。
研究mfc的實現絕對是百益而無一害的,對於後期我們自己寫架構有重要的參考價值,裡面的設計思想也很先進。
推薦: 候俊傑 的《深入淺出mfc》 或者 王豔平 的《windows 程式設計》。這兩本書能讓樓主對mfc有深刻的理解。
請問mfc中view類和doc類如何區別
9樓:燃燒的左眼
vc講的是視覺化程式設計,你想讓大家看見的東西就在view中寫,不想讓大家知道的後臺處理就寫在doc中,簡單的說就這樣 呵呵
10樓:塞欣然
doc是文件。view是檢視。怎麼說呢。一般先寫文件內的**。要顯示的繪製的寫再view裡。
11樓:
都可以的,但是有個先後順序,就是先執行view中的方法,再執行doc中的方法
12樓:風輕雲度
顧名思義,view類是用來做前臺顯示,doc類負責資料的處理,在view類進行繪製或者顯示的時候是需要資料的,那麼這些資料需要一個管理者--他就是doc類。
你所說的按鈕編輯,看實現什麼邏輯,如果是對顯示操作,比如是否顯示列表等,在view類裡實現,如果對資料的處理,比如操作連結串列資料,那麼在doc類裡面處理。
13樓:匿名使用者
可以參考msdn裡面的mfcie示例
並且看看侯捷的深入淺出mfc。。。
謝謝!```
document/view模式 是為了在邏輯上,讓資料和顯示分開。
一般在document裡,定義document類的成員變數,來存資料,並用view來顯示.
在document裡,當成員變數的資料改變時,你可以用updateallviews()來通知檢視更新
在view裡,用getdocument來獲取與之對應document的指標,進而可以訪問document的成員變數,從而進行顯示document/view僅僅是mfc為你提供的一種很好的支援而已.
如何在mfc的對話方塊程式中新增列印設定的功能,列印設定使用cwinapp類中自帶的框架?
14樓:匿名使用者
哥們 你就是要彈出列印對話方塊吧 ,這樣就行了其實:
cprintdialog pd(true);
pd.domodal();
void cprinttestdlg::onbnclickedbutton1()
// todo: 在此新增控制元件通知處理程式**//sendmessage(wm_print,null,null);
cprintdialog pd(true);
pd.domodal();
希望幫到你。。
北京中建建築設計院上海分院怎麼樣啊
辦公地點在外灘附近 蘇州河口。吳淞路耀江國際,以上海及江浙專案為主,根據業主需要也服務致遼寧,內蒙,山東等地,與萬達,奧克斯,農工商,華潤,海亮等地產集團有密切服務關係,萬達集團2012設計服務優秀供方。 先查查北京中建怎麼樣,然後看看上海那邊是不是掛靠的 北京中建建築設計院上海分院是有名設計院,它...
在橡膠配方設計中的硬度是怎麼計算的
123456奮鬥 一 膠種基本硬度 補強填充硬度 填充軟化油在 實際硬度,具體每種材料的硬度比,可以到韌客論壇的橡膠問吧發提問帖。二 橡膠配方設計的原則可以概況如下 1 保證硫化膠具有指定的技術效能,使產品優質 2 在膠料和產品製造過程中加工工藝效能良好,使產品達到高產 3 成本低 便宜 4 所用的...
在追女生的過程中,怎麼做能讓彼此的關係在近一步
來自鄱陽湖好奇的棣棠 你得先了解她的喜好,接觸她喜歡的事物,還有一點就是打通跟她關係比較好的女性朋友,從側面入手,當然接觸的話你要麼就不著痕跡,要麼就堂而皇之,這要看女生的反應而定。久而久之,女生就知道你對她有意思,或者說女生就知道,你懷有好的意圖有意接近她。這樣倆人關係便能進一步。當然,這過程中萬...