【转】WIN32 控制台程序
http://blog.csdn.net/houmin0036/article/details/7702236
win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运行的应用程序...
win32项目指运行于32位Windows操作系统中的应用程序...包括win32控制台项目...
1、Win32项目包括:Win32 应用程序、控制台应用程序、DLL 或其他静态库的项目;
2、控制台应用程序通常被设计为没有图形用户界面,并编译成独立的可执行文件。控制台应用程序通常从命令行运行,同时在命令提示和运行的应用程序之间交换输入和输出信息。
win32应用程序是有窗体的(当然也可以没有),有Windows消息循环机制的。 而win32控制台应用程序只是在控制台下运行的程序,类似以前dos的程序。
可以在VC里建一个win32 application和一个win32 console application,两个dsp工程文件对比一下,你会发现应用程序里的subsystem:windows,控制台程序里的subsystem:console。 subsystem这个链接选项告诉Windows如何运行可执行文件。 subsystem是console的话,Windows在进入可执行文件的代码前,就会产生一个控制台窗口。 subsystem是windows的话,操作系统就不产生console窗口,该应用程序的窗口由用户自己创建。
可以调用GUI里面的API的,
如果你看了一些VC的启动代码(就是main,WinMain,DllMain之前的代码)就知道
控制台程序在启动代码中多了取得标准输入输出句柄以及将程序参数转化成C语言格式
的参数形式
控制台程序就是通过命令行的方式进行输入和输出的
Win32程序是它的上层概念,Win32程序可以是Console的也可以是GUI的
Win32 程序:利用Windows编译器、连接器做出来的程序,都是所谓的Win32程序。
Console程序:也是Win32程序,它是dos-like程序,可以调用C Runtime函数和不牵涉GUI的Win32API函数。Console视窗将是其标准输入输出设备(cin、cout)。
Dos程序:过去在dos环境开发的程序。它也是以main()为函数进入点,可以调用C Runtime函数,但是不具备调用Win32API函数的能力。
Windows支持的两种应用程序:
(1) 基于图形用户界面的应用程序,即GUI;
(2) 基于控制台用户界面的应用程序,即CUI.
Windows应用程序必须有一个在应用程序启动运行的调用进入点函数:
应用程序类型 进入点
需要ANSI字符和字符串的GUI应用程序 WinMain
需要ANSI字符和字符串的CUI应用程序 main
需要Unicode字符和字符串的GUI应用程序 wWinMain
需要Unicode字符和字符串的CUI应用程序 wmain
前面是DOS环境的,是单任务的
后面是WINDOWS的,支持多任务,多线程~
win32控制台程序是用来编写DOS程序的,在DOS下生成WINDOWS窗口的编写是相当麻烦的。要用DOS下c语言的绘图函数把窗口画出来。 但VC已经提供了窗口的框架和显示,我们现在没必要再去做这些工作了。 程序入口不能决定任何事,它就是一个入口,程序必须有它,程序完成什么样的功能由程序的代码来确定。 窗口就是一个图形,是由程序画出来的,代码封装在MFC底层。我们不需要具体了解,只需要知道原理就可以了。
源地址:http://hi.baidu.com/%D6%D0%B9%FA%C9%BD%B6%AB%C8%CB2009/blog/item/0ebc38d758af
【转】WIN32 控制台程序的更多相关文章
- Win32控制台程序和Win32应用程序
刚接触Windows那一套,大多数概念都还没建立起来,整理了一下网上对“Win32控制台程序”的理解,谢谢各位网友了. win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运 ...
- vs2008 新建win32控制台程序提示:脚本错误
解决方案: 1.根据错误信息中的url,找到对应文件夹下的htm文件 2.使用notepad++打开default.htm文件,找到错误提示的434行,注释掉433和434行 然后保存文件,重新新建w ...
- 用消息在Win32控制台程序多线程间进行通讯
#include <stdio.h> #include <windows.h> //#include <iostream> //#include <pro ...
- win32控制台程序 宽字符与短字符转化
由于vs各版本之间存在字符设置不兼容问题,特总结char与tchar的互相转换函数,如下,在之后的工程中可以使用. void TcharToChar(const TCHAR * tchar, char ...
- 如何隐藏win32 控制台程序的console窗口 2011-06-17 17:59
加上 即可 // 隐藏窗口#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainC ...
- vc2010 win32 控制台应用程序中文乱码
vc2010 win32 控制台应用程序中文乱码 在 vc2010 上用 win32 控制台程序写些测试代码调用 windows api ,处理错误信息时,发现用 wprintf 输出的错误信息出现了 ...
- VS中空项目、win32项目、控制台程序的区别(转)
空项目,大多数想单纯创建c++工程的新同学,打开vs后很可能不知道选择创建什么工程,这时候请相信我,空项目是你最好的选择.因为空工程不包含任何的源代码文件,接下来你只需要在相应的源代码文件夹和头文件文 ...
- Linux终端和win32控制台文本颜色输出
在使用putty.secureCRT.XShell等终端仿真器连接linux系统时,ls.vim等工具的输出都含有各种颜色,这些颜色的输出大大地增强了文本的可读性. 通常我们可以使用echo命令加-e ...
- Win32控制台、Win32项目、MFC项目、CLR控制台、CLR空项目、空项目区别
转载:https://blog.csdn.net/zfmss/article/details/79244696 1.Win32控制台 初始代码模版以main为程序入口,默认情况下,只链接C++运行时库 ...
随机推荐
- Android Studio 出现Failed to open zip file的问题
修改gradle . 首先我们打开setting搜索gradle.我们可以从该界面上看到gradle的版本.
- https采集12306(复制)
package train; import java.io.IOException;import java.security.NoSuchAlgorithmException;import java. ...
- django 1.8 评论库comments配置问题
comments库是django框架内置的评论库,可以快速搭建网站需要的评论系统.不过1.8的配置和1.6的出现了一点小小配置,由于刚刚接触,按照网上的文档配置,需要在 settings.py的INS ...
- 日期函数(sql)
SQL 标量函数----->日期函数 day() .month().year().2009年02月23日 星期一 11:30 SQL 标量函数----->日期函数 day() .month ...
- create()创建的控件不能映射消息函数的解决
有时,使用create()在运行时创建的控件不能将消息映射到父窗口内,此时需要使用消息转发的机制,主要原理:注册一个全局的消息,针对接收消息的控件编写继承类,在该继承类中响应消息,并将已注册的全局消息 ...
- 云端卫士实战录 | Java高级特性之多线程
<实战录>导语 一转眼作为一名Java开发者已经四年多时间了,说长不长说短不短,对于java的感情还是比较深的,主要嘛毕竟它给了我饭吃.哈哈,开个玩笑.今天我想借此机会来和大家聊聊Java ...
- git conifg
1. git config简介 我们知道config是配置的意思,那么git config命令就是对git进行一些配置.而配置一般都是写在配置文件里面,那么git的配置文件在哪里呢?互动一下,先问下大 ...
- Spring注解@Component、@Repository、@Service、@Controller区别 .
Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service 和 @Controller.在目前的 Spring ...
- OD使用教程3
reverseMe爆破: 跳转指令 让跳转已实现,把z的1改成0 按F8走,继续把z的1改成0,实现跳转 根据跳转指令,改变s或o,使跳转不实现 指令如上使跳转不实现 继续按f8往下走然后成功
- spring官网改版后,如何下载jar包
http://repo.springsource.org/libs-release-local/org/springframework 通过以上地址,可树型查看所有发布的包 问题是,官网页面上为何找不 ...