windows的应用程序之CUI(控制台)程序和(GUI)程序

C#中控制台程序windows窗体应用程序编程区别 控制台程序代码段: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication { class Program { static v... 阅读详情

CUI是console uers interface,GUI是graphical user interface,顾名思义,一个是基于控制台的,一个是基于窗口的。所谓的控制台,其实是一种文本,所以,控制台程序也就是基于文本的应用程序。说起应用程序,就不得不说进程,一个应用程序的实例(也就是运行着的应用程序)就是一个进程,所谓进程,其实也是一个空架子,它由一个记录该进程的内核对象和一个存放可执行文件所有代码和数据以及动态内存分配的地址空间。有了这样的信息,操作系统才可以有效地管理进程,有了这样的地址空间,才可以在进程中启动线程。这里说到线程,其实线程才是真正的执行代码的核心,而进程只是提供了一个孕育的环境,进程是有惰性的,当一个进程启动时,必须有第一个线程启动,这个线程叫主线程,如果愿意,再由主线程启动一级,二级以及多级的子线程。同样,当进程中所有线程都退出时,进程也就结束了自己的生命。有了这些我们就可以讨论一下CUI和GUI的区别之处了。

大家都知道,windows应用程序都要有一个入口函数,CUI是main,而GUI是winmain,也正是因为这样的不同入口,区分了CUI和GUI。说到入口,就应该有这样的疑问“入口之前是什么?”其实,在进入入口之前,首先执行的是操作系统的加载程序,而这个加载程序通过检查可执行文件映像的文件头,来链接适当的入口函数,同时,对CUI和GUI进行明显的区分:对于CUI程序加载程序自动确保有一个可用的文本控制台,而对于GUI程序就仅仅是将其加载。这就是说,你希望实现什么类型的应用程序,就给怎样的链接信息(LINKER->SUBSYSYEM里可以指定)。需要特别注意的是,经过连接器的指示,操作系统去调用入口函数了,可你万万没有想到,此时,你的main或者winmain其实依然没有被调用,实际上,此时的连接器指示的是操作系统调用的C/C++运行库中的启动函数,刚才说了应用程序有CUI和GUI之分,同理,在C/C++运行库中,同样有两个版本的启动函数,winmainCRTStartup 和 mainCRTStartup(其实是四个,另外两个是用为unicode,这两个是ansi,道理依然,这里不再赘述),

而这两个函数才是真正的导火线,他们将针对进行一些列的设置:

1.获取进程命令行参数的指针和进程环境变量的指针;

2.初始化C/C++运行库的全局变量;(这也是为什么你只要在自己的代码中包含了stdlib就可以用_osver的原因)

3.初始化内存分配函数(malloc,calloc)

4.调用所有全局的和静态的C++类对象的构造函数。

5.进入用户的入口。(CUI:main,GUI:winMain)

看windows核心编程的总结,对windows应用程序的来龙去脉更加了解了。share to all!

如何在命令提示符窗口下运行Win32控制台应用程序 本文主要介绍Windows控制台应用程序,以及如何在命令提示符下运行C++应用程序 阅读详情

相关推荐

控制台界面与GUI相比的优缺点

1、参见:http://zhidao.baidu.com/question/12810776.html 在VC里建一个win32 application一个win32 console application,两个dsp工程文件对比一下,你会发现应用程序里的subsystem:windows控制台程序里的subsystem:console。 subsystem这个链接选项告诉Windows如何运

王骕的专栏 7749

调用CUI程序的方法

调用CUI程序的方法

传统GUICUI的交互方式对比

传统GUICUI的交互方式对比 关键词:传统GUI, CUI, 交互方式, 用户体验, 技术演变, 开发模式 1. 背景介绍 随着计算机技术的发展,用户界面(UI)设计也在不断地演变。传统GUI(Graphical Us

欢迎来到我的CSDN空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 1971

LUI、GUICUI分别是什么

LUI、GUICUI分别是什么

大连赵哥的博客 1万+

关于编写GUI程序我自己的一些理解

关于GUI程序

Sky的专栏 2315

GUICUI程序区别

应用程序类型 控制台用用程序CUI控制台程序是基于文本的,他一般不会创建窗口或者进程消息而且不需要GUi GUI(图形用户界面) GUI是图形化的前端,可以创建窗口,可以拥有菜单,能通过对话框与用户进行交互,能够使用标准的视窗化的标准,在window中几乎所有的应用附件程序都是GUI程序区别 1 在vs中,CUI程序的连接器开关为/SUBSYSTEM:CONSOLE, ...

头秃程序员的日常 9807

解构语音交互产品--认知篇

目录一、基本概念1.什么是机器人bot2.GUI、VUI与CUI二、语音交互产品主要应用场景1.家居场景2.车载场景3.随身/移动场景4.办公场景/企业应用三、VUI设计的相关问题1.为什么使用VUI2.不适合使用VUI的场景有哪些四、VUI设计的挑战1.“无边界”设计2.“多场”交互的设计3.语音识别准确率4.语义理解5.多轮对话问题6.核心场景与用户持续互动的能力 一、基本概念 1.什么是机...

plusli的博客 6920

Win32控制台程序是什么

win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运行的应用程序... win32项目指运行于32位Windows操作系统中的应用程序...包括win32控制台项目... 1、Win32项目包括:Win32 应用程序控制台应用程序、DLL 或其他静态库的项目; 2、控制台应用程序通常被设计为没有图形用户界面,并编译成独立的可执行文件。控制台应用程序通常从命令行运

houmin0036的专栏 5646

windows 复习 2 windows支持的两种应用程序

windows支持的两种应用程序: 1.GUI程序(Graphical User Interfer),GUI程序是一个图形化前端。它可以创建窗口,可以拥有菜单,能通过对话框与用户交互,还能使所有标准的“视窗化”的东西。windows附带的所有程序(记事本,计算器写字板)都是GUI程序。 2,CUI程序(Console User Interfer),CUI程序是一个控制台程序,基于文本,他们一般不会创建窗口或处理消息,而且不需要GUI,虽然CUI程序是在屏幕中的一个窗口中运行的,但这个窗口中只有文本,“

xmmdbk的博客 1093

Win32控制台应用程序,Win32项目,MFC应用程序区别与联系

Win32控制台应用程序,Win32项目,MFC应用程序区别与联系 Win32控制台程序 初始化代码模板以Main为程序入口,默认情况下,只链接C++运行时库一些核心的Win32库,链接器subsystem参数为console类型,所以编译出来的程序会有黑色的控制台窗口作为呈现标注输入(stdin)标准输出(stdou) Win32项目 初始代码实现一个简单的windows窗口,以W...

qq_40982049的博客 1452

CUI & GUI in C++

int CUI Application#include #include DWORD WINAPI mainGUI( LPVOID lp){ HMODULE hInstance= 0; hInstance = GetModuleHandle(NULL); HWND hWnd; MSG msg; hWnd = CreateWindow("EDIT",

MoXiaoRab的专栏 2346

进程与windows应用程序

进程      一般进程可以定为一个正在运行的程序的一个实例,      一个内核对象,操作系统可以用它来管理进程。也是系统保存进程统计信息的地方。      一个地址空间,其中包含了可执行文件DLL模块的代码数据,同时包括动态内存分配,线程堆栈堆得分配。      CPU的工作方式,是 一个进程可以有多个线程..然后CPU会轮流调度资源分配给各个线程,就像一个时钟一样。      关于Wi

photon 707

C、C++控制台程序Windows API程序、MFC程序理解与比较

编程语言中,函数是一个很重要的概念,其身影无处不在。在面向过程的编程方式中,函数更是程序的基本构建模块,在面向对象的编程方式中,函数演变为类或对象的成员(当然也可以使用与类无关的函数)。函数由函数头函数体组成。函数头包括域属性(如external、static或类域)、返回值类型、函数名、及参数。域属性包括其在多文件编程中的可见范围,是否是属于某一个类的成员?返回值类型是指函数返回的值的具体数...

weixin_33964094的博客 1042

【JAVA】GUI+控制台程序 学生成绩管理系统

【JAVA】GUI+控制台程序 学生成绩管理系统,涉及java swing库JMeauBar菜单栏,JTable表格的增删改查,JButton事件绑定,各种按钮事件的绑定

雾狼的游戏屋 7546

什么是CLI(命令行界面)、GUI(图形用户界面)、Terminal(终端)、Console(控制台)、Shell、TTY

文章目录CLI (命令行界面)Terminal(终端)终端机字符终端 (Character Terminal)图形终端 (Graphical Terminal)Console (控制台)TTY 设备虚拟控制台 (Virtual Console)伪终端(Pseudo Terminal)LINUX下的终端Shell 程序猿都用过终端、Shell,并且经历越多会越来越发现他们的强大无处不在。而很多小白有工作经验但是半路出家的程序猿经常搞不清CLI、Shell、Console的概念,或者是会用但是不明所以。

UP的博客 3万+

如何判断应用程序运行于GUI模式还是命令行

越来越多的应用程序提供以命令行的方式来运行,通常的做法有两种:单独给应用程序写一个基于命令行运行的控制台程序,用户运行这个程序时它一定是以命令行的方式来运行;以GUICommand Line共享一个应用或exe文件,但通过不同的arguments来判断,最终分别做不同的处理。   对于单独给应用程序写基于命令行运行的控制台程序,无非是通过判断传递的args数组来辨别并设置程序运行所需要的参数,

u014549517的专栏 1023
上一篇: 启程——我的2011
下一篇: 宁静以致远
fancycow
博客等级 码龄18年 20粉丝 20原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值