win32控制台 win32工程 MFC工程的區別

2021-08-21 19:16:57 字數 2519 閱讀 3819

空專案

控制台

問2個問題即可。

1.控制台 vs win32 mfc?

嗯,有不有臉?

有臉,選win32或mfc。沒有臉,選控制台。

臉就是視窗,就是window......s

(這個有臉)

(這個沒臉)

控制台與win32 mfc:互動方式的不同,前者是cml(命令模式),後者是gui(使用者介面)。

2.mfc vs win32

嗯,是不是「國」字臉?

是「國」字臉,選mfc。是diy的臉,選win32。

(國字臉1)

visual studio c++ 建立新專案蹦出來如下選項:

win32控制台應用程式,win32專案,mfc有什麼區別?

win32控制台,沒有介面,命令列執行生成的檔案則直接在後台執行,執行效果如下:

win32專案

這個就有介面了,但是介面裡面的控制項,基本上要自己去實現。

mfc專案(microsoft foundation class library,微軟基礎類庫)

這個也有介面,可是介面裡面的控制項就不需要自己實現了,常用的控制項都已經在mfc庫內寫好,直接拖動即可。

對visual c++來說,不同的專案會有不同的初始**模版和引數設定,這些引數包括:c++編譯器引數,鏈結器引數等。如果願意並且不嫌麻煩的話,通過專案屬性對話方塊調整引數,它們之間是可以相互轉換的。

具體的差異如下:

win32控制台程式:初始**模版以main為程式入口,預設情況下,只鏈結c++執行時庫和一些核心的win32庫,鏈結器subsystem引數為console型別,所以編譯出來的程式會有黑色的控制台視窗作為呈現標準輸入(stdin)和標準輸出(stdout)。

win32工程:初始**模版實現乙個簡單的windows視窗,以winmain作為程式入口,引用了win32api標頭檔案和庫,鏈結器subsystem引數為windows,所以生成的程式不帶黑色的控制台,直接使用標準輸入和標準輸出,看不到效果。

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

採用控制台還是win32 mfc,取決於是否需要同使用者進行互動,以及互動的頻率是高還是低。字處理軟體需要實時檢視編輯成果,所以採用了視窗;而乙個木馬程式,採用了視窗就會暴露自己,所以採用控制台。

需要與使用者進行大量互動或者要滿足「所見即所得」,採取wn32 mfc;無需互動或者互動極少,採用控制台。

windows提供win32 api以供程式設計師完成各種操作,所以控制台,win32,mfc都可直接呼叫win32 api。

但直接使用win32 api,用**完成諸如建立視窗,顯示視窗等操作太過繁雜,於是我們把這些**結合抽取取來,變成oop中的類,也就是微軟基礎類庫(mfc)。

只強調實用與開發效率,用mfc;強調使用者體驗與軟體細節,使用win32。mfc可以實現的,win32都可以實現。反之不可。

實際上兩者並沒有多大區別。最大的區別當然是程式入口了,console的入口是main,windows的入口時winmain。而程式的入口點是可以重新設定的。我們可以在console應用程式中設定其入口點為winmain,反之亦然。 

它們主要的區別是定義的巨集不同,乙個是win32,另乙個是console. 

在預處理中把_windows換成_console就行了 

project settings -> link :將/subsystem:windows開關改為/subsystem:console 

可將win32控制台程式 當成 在win32專案 使用,反之亦然。 

把/subsystem:windows或/subsystem:console刪除,由編譯器自己決定也可以

WIN32控制台生成DLL

step 2 建立好的工程會自動生成dllmain.cpp win32dlltest.cpp等檔案。工程中建立新檔案,型別選擇def,名字為dllmain step 3 在dllmain.cpp中實現函式功能,匯出函式名為audit chargesystem function,函式實現為 這是匯出函...

Win32控制台工程中建立視窗

test.cpp 定義控制台應用程式的入口點。include stdafx.h include include include define max str 100 全域性變數 hinstance hinst 當前例項 tchar sztitle max str text console win d...

win下建立win32控制台工程,執行lua指令碼

出現問題 1 1 src lua.c 309 error c4996 getenv this function or variable may be unsafe.consider using dupenv s instead.to disable deprecation,use crt secur...