帶dos調試窗口的win32程序

#pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")編程

 

 

方法只要
在cpp文件頭部加入一行:

#pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")
//以console程序樣式,而且制定winmain的入口.
此位置在系統.h的後面。如放在:stdafx.h的後面就能夠。

無論是vc6仍是.net均可以。

若是link無效,須要替換WinMainCRTStartup

入口函數有:
mainCRTStartup
wmainCRTStartup
wWinMainCRTStartup
WinMainCRTStartup
---------------------
在vc2005中的mfc和sdk 程序的入口不一樣。mfc的入口爲WinMainCRTStartup。sdk程序的入口爲:wWinMainCRTStartup。

vc6的入口都是WinMainCRTStartup。
以上請你們注意。


在使用printf語句以前記得把stdio.h的頭文件包含進去.就能夠.實現這個有趣的程序.其實在調試一些大型的win32 gui程序的時候這個dos窗口至關的有用.

反過來.你在console工程中加入
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 設置console的入口地址和gui樣式.
dos窗口就消失了.之會顯示像 MessageBox之類的gui窗體.

這些link選項最後都會填寫到PE頭文件的Subsystem節中裏面只須要把03(console模式,WINDOWS_CUI=3)該爲02(WINDOWS_GUI=2).簡單點使用修改pe頭文件的工具直接修改就能夠使gui程序中的printf函數生效.


通常放在#include "stdafx.h"的後面,纔有效
sdk:
#pragma comment( linker, "/subsystem:\"console\" /entry:\"wWinMainCRTStartup\"")
#pragma comment( linker, "/subsystem:console /entry:wWinMainCRTStartup")

mfc:
#pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup")
實際編程上面的應用的sdk程序中windows

http://blog.csdn.net/xhhjin/article/details/6658941函數

相關文章
相關標籤/搜索