17、Windows API 图形用户界面(1)

简介: 一、基本概念 Windows的用户界面分为两个部分:字符图形界面和图形用户界面。字符图形界面较为简单,主要内容包括如何在界面上读取用户输入,如何向界面终端输出信息。如何控制界面的字体、背景、颜色等。

一、基本概念

Windows的用户界面分为两个部分:字符图形界面和图形用户界面。字符图形界面较为简单,主要内容包括如何在界面上读取用户输入,如何向界面终端输出信息。如何控制界面的字体、背景、颜色等。

字符界面的人机交互接口只有一种,称作控制台( Console)。用户通过控制台向应用程序输入命令和数据,应用程序将运行结果或提示信息等显示在控制台上。如cmd.exe

字符界面应用程序的所有输入和输出都是通过Console,字符界面相关的API函数都是通过Console的句柄来操作控制台的。

Console句柄分为两种,标准输入(Stand In)句柄和标准输出(Stand Out)句柄,分别用于从界面上读取输入和向界面输出。

大多数情况下,字符界面应用程序都只有一个控制台窗口,其标准输入句柄和标准输出句柄都代表了这个控制台。然而它们确实是两个句柄,所能进行的操作和权限是不一样的。如果使用“标准输入句柄”作为参数,调用WriteConsole等用于控制台输出的API函数是会产生错误的。

1、字符单元(Cell)

    控制台的最小单元是字符单元。一个字符单元可以放置一个字符。字符单元是对控制台进行操作的最小单元。所有的属性修改操作也都是以字符单元为单位的。

    实际上,类似于printf等标准C函数在Windows系统中都是通过系统的动态链接库crtdll.dll导出,printf函数的实现也位于crtdll.dll中,分析printf等函数的实现代码可以发现,在Windows平台上,实际printf函数在做了格式化字符串的处理后,是调用WriteConsoleAPI函数进行界面操作的。

2、控制台子系统

    Windows系统的应用程序分别运行于若干子系统。其中WindowsConsle是两个最常用到的子系统,图形用户界面的程序运行于Windows子系统,控制台界面的程序运行于Consle子系统。图形用户界面的应用程序窗口是由应用程序调用API函数创建的,而控制台应用程序的控制台界面并不需要应用程序创建,系统会为其自动创建。

3、控制台读写

    使用Windows API向控制台写入数据获从控制台获取输入的过程如下:

◇使用GetStdHandle函数获取本应用程序的控制台标准输入、输出句柄(当然需要本应用程序是一个控制台程序,具有一个控制台。控制台程序在链接时需要选择子系统为CONSOLE,链接选项:/SUBSYSTEM:CONSOLE)。

◇以标准输出句柄为参数,调用WriteConsole API写入输出。

◇以标准输入句柄为参数,调用ReadConsole API读取输入。

示例代码

更多Consoles and Character-Mode Support,可以参见[1,2]

[1] 精通Windows API 函数、接口、编程实例

[2] http://msdn.microsoft.com/en-us/library/ms682010%28VS.85%29.aspx

目录
相关文章
|
12月前
|
数据可视化 前端开发 Java
为什么说Windows这么强大呢?— 原来是因为图形化界面
为什么说Windows这么强大呢?— 原来是因为图形化界面
118 0
|
12月前
|
数据可视化 前端开发 Java
打破你对Windows系统的认知?— 原来是因为图形化界面
打破你对Windows系统的认知?— 原来是因为图形化界面
133 0
|
11月前
|
网络协议 Linux 网络安全
Windows远程连接centos7图形化界面,安装xrdp
Windows远程连接centos7图形化界面,安装xrdp
300 0
|
2天前
|
NoSQL Redis 数据安全/隐私保护
Redis 最流行的图形化界面下载及使用超详细教程(带安装包)! redis windows客户端下载
文章提供了Redis最流行的图形化界面工具Another Redis Desktop Manager的下载及使用教程,包括如何下载、解压、连接Redis服务器以及使用控制台和查看数据类型详细信息。
15 6
Redis 最流行的图形化界面下载及使用超详细教程(带安装包)! redis windows客户端下载
|
2天前
|
NoSQL Redis 数据库
Redis 图形化界面下载及使用超详细教程(带安装包)! redis windows下客户端下载
文章提供了Redis图形化界面工具的下载及使用教程,包括如何连接本地Redis服务器、操作键值对、查看日志和使用命令行等功能。
22 0
Redis 图形化界面下载及使用超详细教程(带安装包)! redis windows下客户端下载
|
11天前
|
网络协议 API Windows
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
|
2月前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
112 0
|
5月前
|
API Python Windows
python3应用windows api对后台程序窗口及桌面截图并保存的方法
python3应用windows api对后台程序窗口及桌面截图并保存的方法
434 1
|
5月前
|
移动开发 前端开发 API
HTML5 Canvas 提供丰富的绘图API,支持绘制图形、文本、渐变和图像,助力游戏开发
【5月更文挑战第13天】HTML5 Canvas 提供丰富的绘图API,支持绘制图形、文本、渐变和图像,助力游戏开发。关键功能包括绘制基本形状、文本渲染、图像处理及渐变图案。在游戏开发中,Canvas用于绘制游戏元素、实现动画效果、精确的物理碰撞检测,并具有跨平台兼容性,为创造多样化视觉体验和互动游戏提供强大工具。随着技术进步,Canvas在游戏领域的应用将持续增长。
55 4
|
5月前
|
Windows
LabVIEW在Windows平台上的图形导入
LabVIEW在Windows平台上的图形导入
50 0