Ⅰ vs2010如何縮小創建的工程的大小,一個MFC都100MB,有什麼設置可以減小生成代碼大小嗎
100M包含了很多編譯生成的中間文件,是無用的。單純代碼大小隻需要.h,.cpp文件,很小的。
Ⅱ 什麼是MFC編程
MFC(Microsoft Foundation class)微軟基本類(庫),它是一個面向對象的應用程序架構。程序員利用它可以很方便搭建應用程序框架。
MFC結合了面向對象的編程技術和WINDOWS消息驅動的編程技術,並封裝了WIN32API,其設計好處是:消除了WIN32API的復雜性,封裝了WIN32API,統一了程序的概念,而且可擴展。
MFC實際上是微軟提供的,用於在C++環境下編寫應用程序的一個框架和引擎。VC++是Windows下開發人員使用的專業C++SDK,MFC就是掛在它之上的一個輔助軟體開發包。
(2)mfc編譯軟體大小擴展閱讀
MFC編程優勢
面對底層程序,它能很輕松的與Windows API或驅動程序結合,就是在自己的代碼中直接使用API函數,而API和驅動程序的資料都是以C語言為基礎的,這使得VC程序員能夠更輕松的使用Windows API。
這樣造成了一個很有意思的現象,即入門時VC程序員要付出更多的努力來學習,但是一旦掌握後,開發其他領域的程序或使用第三方軟體時,如工業控制類的程序,由於底層的程序都是用C語言編寫,反倒是VC程序員能夠更快的掌握該領域的編程技術。而很多其他的編程語言甚至找不到相關的資料。
這就說明VC(MFC)實際上是一種入門困難,但是擴展學習卻很輕松的語言框架。
Ⅲ mfc編程,簡歷一個基於單文檔的mfc應用程序,如何改變窗口大小
這個方法很多!! 可以直接SendMessage(hwnd,WM_SIZE,width,heig);
Ⅳ MFC程序是怎麼編譯的
第一個問題的答案是肯定的,全部編譯。
補充問題的回答:
MFC編譯的時候有兩種形式:
1. 靜態鏈接MFC (調用靜態鏈接lib庫,程序拷貝到其他電腦時不需要MFC的dll了)
2. 動態鏈接MFC(此時就需要使用到MFC的dll)
動態鏈接時的解決方案:
1. 安裝MFC簡易本地運行包。這個在VC安裝程序里有的。這個東西非常小,安裝一下無大礙。
2. 在VC程序安裝目錄的相對路徑下找到:
\VC\redist\x86 的 .crt和.mfc 目錄,將里邊的dll拷貝到編譯出的exe目錄下,然後拷貝到相應電腦即可。
Ⅳ 支持MFC的編譯器只有VC++6.0和vs嗎
支持MFC的編譯器有VC++(不一定要是6.0版的),還有新版的Borland C++
舊版的 Borland C++ 不支持 MFC ,但是新版的 Borland C++ 支持 MFC 。
所有版本的 VC(從 Visual C++ 1.0 到 Visual C++ 6.0)和 VC.NET(從 Visual C++ 2003 到 Visual C++ 2010 ),全部都支持 MFC 。
Ⅵ 如何減小 visual c++ 2010 靜態編譯出的 mfc 可執行文件的大小
工程切換到RELEASE模式沒有?用RELEASE重新生成會小很多。此外,還可以再加殼加密和壓縮,網上有很多加殼工具。
Ⅶ MFC是什麼軟體
MFC 微軟基礎類介紹MFC,微軟基礎類(MicrosoftFoundation Classes),同VCL類似,是一種ApplicationFramework,隨微軟Visual C++ 開發工具發布。目前最新版本為9.0(截止2008年11月)。該類庫提供一組通用的可重用的類庫供開發人員使用。大部分類均從CObject 直接或間接派生,只有少部分類例外。MFC 應用程序的總體結構通常由開發人員從MFC類派生的幾個類和一個CWinApp類對象(應用程序對象)組成。MFC 提供了MFCAppWizard 自動生成框架。Windows 應用程序中,MFC 的主包含文件為"Afxwin.h"。此外MFC的部分類為MFC/ATL 通用,可以在Win32 應用程序中單獨包含並使用這些類。由於它的易用性,初學者常誤認為VC++開發必須使用MFC。這種想法是錯誤的。作為ApplicationFramework,MFC的使用只能提高某些情況下的開發效率,只起到輔助作用,而不能替代整個Win32 程序設計。特點MFC,微軟基礎類(MicrosoftFoundation Classes),實際上是微軟提供的,用於在C++環境下編寫應用程序的一個框架和引擎,VC++是WinDOS下開發人員使用的專業C++ SDK(SDK,StandardSoftWare Develop Kit,專業軟體開發平台),MFC就是掛在它之上的一個輔助軟體開發包,MFC作為與VC++血肉相連的部分(注意C++和VC++的區別:C++是一種程序設計語言,是一種大家都承認的軟體編制的通用規范,而VC++只是一個編譯器,或者說是一種編譯器+源程序編輯器的IDE,WS,PlatForm,這跟Pascal和Delphi的關系一個道理,Pascal是Delphi的語言基礎,Delphi使用Pascal規范來進行Win下應用程序的開發和編譯,卻不同於Basic語言和VB的關系,Basic語言在VB開發出來被應用的年代已經成了Basic語言的新規范,VB新加的Basic語言要素,如面向對象程序設計的要素,是一種性質上的飛躍,使VB既是一個IDE,又成長成一個新的程序設計語言),MFC同BC++集成的VCL一樣是一個非外掛式的軟體包,類庫,只不過MFC類是微軟為VC++專配的..MFC是Win API與C++的結合,API,即微軟提供的WinDOS下應用程序的編程語言介面,是一種軟體編程的規范,但不是一種程序開發語言本身,可以允許用戶使用各種各樣的第三方(如我是一方,微軟是一方,Borland就是第三方)的編程語言來進行對WinDOS下應用程序的開發,使這些被開發出來的應用程序能在WinDOS下運行,比如VB,VC++,Java,Dehpi編程語言函數本質上全部源於API,因此用它們開發出來的應用程序都能工作在WinOS的消息機制和繪圖里,遵守WinDOS作為一個操作系統的內部實現,這其實也是一種必要,微軟如果不提供API,這個世上對Win編程的工作就不會存在,微軟的產品就會迅速從時尚變成垃圾,上面說到MFC是微軟對API函數的專用C++封裝,這種結合一方面讓用戶使用微軟的專業C++ SDK來進行Win下應用程序的開發變得容易,因為MFC是對API的封裝,微軟做了大量的工作,隱藏了好多程序開發人員在Win下用C++ &MFC編制軟體時的大量內節,如應用程序實現消息的處理,設備環境繪圖,這種結合是以方便為目的的,必定要付出一定代價(這是微軟的一向作風),因此就造成了MFC對類封裝中的一定程度的的冗餘和迂迴,但這是可以接受的..最後要明白MFC不只是一個功能單純的界面開發系統,它提供的類絕大部分用來進行界面開發,關聯一個窗口的動作,但它提供的類中有好多類不與一個窗口關聯,即類的作用不是一個界面類,不實現對一個窗口對象的控制(如創建,銷毀),而是一些在WinDOS(用MFC編寫的程序絕大部分都在WinDOS中運行)中實現內部處理的類,如資料庫的管理類等,學習中最應花費時間的是消息和設備環境,對C++和MFC的學習中最難的部分是指針,C++面向對像程序設計的其它部分,如數據類型,流程式控制制都不難,建議學習數據結構C++版。MFC是微軟封裝了的API。什麼意思呢?windows作為一個提供功能強大的應用程序介面編程的操作系統,的確方便了許多程序員,傳統的win32開發(直接使用windows的介面函數API)對於程序員來說非常的困難,因為,API函數實在太多了,而且名稱很亂,從零構架一個窗口動輒就是上百行的代碼。MFC是面向對象程序設計與Applicationframework的完美結合,他將傳統的API進行了分類封裝,並且為你創建了程序的一般框架,MFC是對WindowsAPI的封裝,大大簡化了我們的工作;學VC主要就是要學MFC,大約有100多個類,但常用的也就二三十個。應該象背4級單詞一樣將這些常用類搞懂;當然不要死記,要通過看幫助、看例子、動手練習來學會它們;而且,並非每個類的內部的所有函數都要學會,要日積月累。如果真的想成為高手,做個筆記本把自己認為重要的類、函數記下來,隨時學習,也是很好的突擊方法。重要的MFCCWnd:窗口,它是大多數「看得見的東西」的父類(Windows里幾乎所有看得見的東西都是一個窗口,大窗口裡有許多小窗口),比如視圖CView、框架窗口CFrameWnd、工具條CToolBar、對話框CDialog、按鈕CButton,etc;一個例外是菜單(CMenu)不是從窗口派生的。該類很大,一開始也不必學,知道就行了。CDocument文檔,負責內存數據與磁碟的交互。最重要的是OnOpenDocument(讀入),OnSaveDocument(寫盤),Serialize(讀寫)CView視圖,負責內存數據與用戶的交互。包括數據的顯示、用戶操作的響應(如菜單的選取、滑鼠的響應)。最重要的是OnDraw(重畫窗口),通常用CWnd::Invalidate()來啟動它。另外,它通過消息映射表處理菜單、工具條、快捷鍵和其他用戶消息。你自己的許多功能都要加在裡面,你打交道最多的就是它。CDC設備文本。無論是顯示器還是列印機,都是畫圖給用戶看。這圖就抽象為CDC。CDC與其他GDI(圖形設備介面)一起,完成文字和圖形、圖像的顯示工作。把CDC想像成一張紙,每個窗口都有一個CDC相聯系,負責畫窗口。CDC有個常用子類CClientDC(窗口客戶區),畫圖通常通過CClientDC完成。CDialog對話框CWinApp應用程序類。似於C中的main函數,是程序執行的入口和管理者,負責程序建立、消滅,主窗口和文檔模板的建立。最常用函數InitInstance():初始化。CGdiObject及子類,用於向設備文本畫圖。它們都需要在使用前選進DC。CPen筆,畫線CBrush刷子,填充CFont字體,控制文字輸出的字體CBitmap點陣圖CPalette調色板CRgn區域,指定一塊區域可以用於做特殊處理。CFile文件。最重要的不外是Open(打開),Read(讀入),Write(寫)CString字元串。封裝了C中的字元數組,非常實用。CPoint點,就是(x,y)對CRect矩形,就是(left,top,right,bottom)CSize大小,就是(cx,cy)對(寬、高)MFC是在1992年的Microsoft16位版的C/C++編譯器的7.0版本中作為一個擴展輕量級的WindowsAPI面向對象的C++封裝庫而引入的。此時,C++因為它在和API方面的卓越表現,剛剛開始被用來取代C應用於開發商用軟體。因此,他們推出了替代早期的老式的字元界面的集成開發環境(IDE)的PWB。相關有趣的是,MFC使用「Afx」作為所有的全局函數的前綴,「afx」作為全局變數的前綴。因為在MFC的早期開發階段它叫「ApplicationFramework Extensions」縮寫為「AFX」。AFX提供了對WindowsAPI的高度抽象,建立了全新的面向對象的AFX API,但它對於新手來說太復雜了,所以AFX小組不得不重新開始。後來他們創建了一組C++類,這就是MFC。MFC這個名字被採用得太晚了以至於沒來得及修改這些引用。最近,MFC8.0和Visual Studio 2005一起發布了;MFC9.0和VisualStudio 2008一起發布。在免費的Express版本的Visual Studio 2005/2008中沒有包含MFC。作為一個強有力的競爭對手,為Borland的Turbo C++編譯器設計OWL(ObjectWindows Library)在同一時間也發布了。但最後,Borland停止了對OWL的繼續開發並且不久就從Microsoft那裡購買了MFC頭文件,動態鏈接庫等的授權,微軟沒有提供完整的MFC的集成支持。之後Borland發布了VCL(VisualComponent Library)來替換OWL框架。 參考資料: http://ke..com/view/10918.htm?fr=ala0_1#2
Ⅷ 用MFC能編大型軟體嗎
1 我使用VC也有10多年了,關於VC開發環境,補充一些我個人的經驗看法:
1)開發環境VC是可以開發大型軟體的;
2)MFC只是VC環境下的一種類庫,還有其他的庫,如STL也是可以使用的,STL移植性會更好些;
3)還包括其他的第三方的庫;
4)還有操作系統底層的API庫等(MFC就是基於操作系統底層API庫);
因此學習VC++開發,包括大型軟體的開發,需要涉及的管理和技術、業務等方面的知識技能,很多方面的內容:
1)需求規格的分析,這涉及軟體工程的內容,包括需求的挖掘;
2)軟體架構設計(需要考慮軟體整體結構,包括功能擴展性,性能,可維護等)
3)軟體各子系統的具體實現設計(如使用的比較多的設計模式應用等);
4)具體編程語言應用、操作系統交互實現、界面設計等;
5)編程實現的編碼規范要求;
6)軟體的測試、體驗等;
以上開發過程的具體開發模式,與項目的生命周期相關,如瀑布模型,增量模型,迭代模型等模型的選擇相關。
因此學習大型軟體的開發,需要技術,業務,以及工程項目管理,以及團隊人員一起協作開發完成的,不是一個人就可以開發大型軟體系統。
一個程序員成長為能開發大型軟體系統,需要經過很多年(5-10年以上)的項目實踐過程,一般是不可速成的。
如需要進一步交流,可以到我的網路空間留言,加好友, 進一步交流!
good luck!
Ⅸ 為什麼vs2015做MFC,靜態編譯體積這么大
打開項目,選擇屬性,分三步:(1)選擇左上角的configuration->Active(Debug)configurationproperties->general->useofMFC,選擇useMFCinastaticlibrary。(2)左上角configuration->debugC/C++->codegeneration->runtimelibrary->multi-threadeddebug(/MTd)(3)configuration->releaseC/C++->codegeneration->runtimelibrary->multi-threaded(/MT)
Ⅹ Visual Studio 2010生成的MFC項目太大了
採用分布式編譯-IncrediBuild
具體的用法網上有很多
IncrediBuild與本例的工程、Makefile、腳本上傳了,下載地址:
http://download.csdn.net/detail/ceofit/4409315
IncrediBuild3.61.1下載地址:
http://download.csdn.net/detail/ceofit/4409322
開發大型項目一次編譯過程經常幾個小時甚至一天,光靠PC跑很難滿足開發需求,再加上敏捷開發每日集成,可能還要運行大量的靜態檢查、測試用例執行等,所以,不可避免的需要使用分布式編譯