1. 程式人生 > >VS中空專案、win32專案、控制檯程式的區別(轉)

VS中空專案、win32專案、控制檯程式的區別(轉)

空專案,大多數想單純建立c++工程的新同學,開啟vs後很可能不知道選擇建立什麼工程,這時候請相信我,空專案是你最好的選擇。因為空工程不包含任何的原始碼檔案,接下來你只需要在相應的原始碼資料夾和標頭檔案資料夾加入相應的.cpp和.h檔案即可。(注:對於首次使用vs的新同學來說,執行程式的時候很可能,閃一下就不見了,請不要著急,這是因為vs軟體本書沒有加上停止的程式碼,我們自己動手加上就好了。每次寫程式的時候,我們需要include標頭檔案stdlib.h,然後在程式末尾加上system(“pause”),你會發現程式停下來了,是不是很開心。)

       接下來說一下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刪除,由編譯器自己決定也可以
---------------------
作者:Adam_Song
來源:CSDN
原文:https://blog.csdn.net/sl850216662/article/details/78642802
版權宣告:本文為博主原創文章,轉載請附上博文連結!