空專案
控制台
問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...