Win32 Application和Win32 Console Application区别

刚开始写程序建的就是控制台工程,但直到今天才大致搞明白控制台应用程序是怎么回事,下面对其做一个解释。

 

1.程序的入口点不同

这时最明显的区别,控制台程序的入口点是main,非控制台的入口点是WinMain。

但入口点并不能说明什么问题,入口点本身只是一个可以指定给编译器的选项:

如上,可以在连接选项中对入口点进行设定。

 

2.控制台应用程序可以弹出黑框框

这个也是控制台程序和非控制台程序之间的一个明显区别。

但其实非控制台程序也可以弹出黑框框:

	AllocConsole();		// 弹出控制台黑框框
 
	MessageBox(NULL"Dongyu\n""MyBox"MB_OKCANCEL);
 
	FreeConsole();		// 控制台黑框框消失

如上,在Win32程序中只需要调用AllocConsole函数就可以把那个黑框框创建出来。至于使用printf之类的向其中写入字符等用法,可以参考一篇文章:http://blog.csdn.net/lzhlzz/article/details/6593614

 

 

 

 

除了这两个区别,之前以为还是有另外一些区别的,一个是控制台程序不能创建窗口,另一个是控制台程序可以运行在Dos环境下而非控制台程序不可以,但其实并不是这样:

1.控制台程序是可以创建窗口的:

int main()
{
	char ch1;
	scanf("%c", &ch1);
	if ('n' == ch1)
	{
		MessageBox(NULL"Dongyu\n""MyBox"MB_OK);
	}
	return 0;
}

如上,只要包含了windows.h头文件,就可以进行创建窗口的操作。

2.控制台程序并不能运行在Dos环境下:

关于控制台程序和Dos程序的区别可以参考一篇帖子:http://topic.csdn.net/t/20040928/13/3415805.html

 

 

总结:

1.Win32 Application和Win32 Console Application都是Win32程序,其文件格式都是PE格式,只不过Console程序文件里有一个字段专门标明这个程序是Console程序。

2.Console程序的特殊之处在于程序加载前进行了AllocConsole的操作,创建了一个Console框,并可以在其中进行输入输出的操作。

3.除此之外Console程序并无特别,一样可以像普通的Win32程序那样创建窗口。

4.Console程序是特殊的Win32程序。

 

 

参考:

http://wenku.baidu.com/view/6ac2d5d5b14e852458fb5717.html

http://blog.csdn.net/lzhlzz/article/details/6593614

http://topic.csdn.net/t/20040928/13/3415805.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值