天天看點

Visual Stutio中win32控制台應用程式、win32項目、MFC項目的差別:

       我的了解,我首先把這幾個貨分為兩大類;第一類包括win32控制台應用程式,第二類就是剩下那倆貨。而剩下那倆貨又有一個包含關系,即win32項目包含mfc。(我個人是這個區分的。)

      一、 差別:

(1)Win32控制台程式,沒有界面,隻有指令符。生成的“.exe”檔案直接運作操作即可。

(2)Win32項目,有界面。但是界面裡面的控件,基本上要自己去實作。

(3)MFC應用程式,也有界面,但界面裡的控件不需要自己去實作了,常用的控件都已經在MFC庫内寫好,直接拖動即可。

(4)控制台與Win32、MFC的互動方式不同,前者采用的是CML(指令模式,也有人說是CUI(Console user Input)),後者是GUI(使用者界面)

(5)Win32項目的界面比較符合UI界面設計;而MFC應用程式的界面基本都是一樣的,因為它們都是用同一套控件模闆。

(6)Win32控制台程式:初始代碼模版以main為程式入口,預設情況下,隻連結C++運作時庫和一些核心的win32庫,連結器subsystem參數為console類型,是以編譯出來的程式會有黑色的控制台視窗作為呈現标準輸入(stdin)和标準輸出(stdout)。

Win32項目:初始代碼模版實作一個簡單的windows視窗,以WinMain作為程式入口,引用了win32Api頭檔案和庫,連結器subsystem參數為windows,是以生成的程式不帶黑色的控制台,直接使用标準輸入和标準輸出,看不到效果。

MFC應用程式:本質上是個win32工程,隻是預設幫你引用了mfc架構的頭檔案和庫,并且程式入口由mfc架構提供,不需要自己寫。

        二、聯系:

         windows提供win32 api以供程式員完成各種操作,是以控制台,win32,mfc都可直接調用win32 api。但直接使用win32 api,用代碼完成諸如建立視窗,顯示視窗等操作太過繁雜,于是我們把這些代碼結合抽取出來,變成OOP中的類,也就是微軟基礎類庫(MFC)

       三、轉換:

         因為兩大類的差別主要是定義的宏不一樣,win32 項目和mfc的為WINDOWS,win32控制台的為CONSOLE,是以:在預進行中把_WINDOWS換成_CONSOLE就行了 。  project  settings  ->  Link  :将/SUBSYSTEM:WINDOWS開關改為/SUBSYSTEM:CONSOLE  。另外, 可将  Win32控制台程式  當成  在Win32項目  使用,反之亦然。/subsystem:windows或/subsystem:console删除,由編譯器自己決定也可以

c++

繼續閱讀