17、Windows API 图形用户界面(1) |
您所在的位置:网站首页 › api用户界面 › 17、Windows API 图形用户界面(1) |
一、基本概念 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函数在做了格式化字符串的处理后,是调用WriteConsole等API函数进行界面操作的。 2、控制台子系统 Windows系统的应用程序分别运行于若干子系统。其中Windows和Consle是两个最常用到的子系统,图形用户界面的程序运行于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 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |