空項目,大多數想單純創建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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!