带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函数

相关文章
相关标签/搜索