




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
附录6 控制台函数用法说明课程设计还应该参考附录4和附录5附录4 例子程序中用到的dorm.h头文件内容附录5 编程规范头文件wincon.h中给出了控制台函数的原型声明及相关类型声明。这里对课程设计中例子程序所用到数据类型和函数的用法进行了说明。1. 相关数据类型(1) 字符信息结构类型CHAR_INFO及其结构指针类型PCHAR_INFOtypedef struct _CHAR_INFO union WCHAR UnicodeChar;CHAR AsciiChar; Char;WORD Attributes; CHAR_INFO, *PCHAR_INFO;包括两个成员。成员Char存放字符的ASCII码值或Unicode码值,成员Attributes存放字符的颜色属性(前景色和背景色)。成员类型WCHAR是宽字符类型,是unsigned short类型的别名;CHAR是char类型的别名;WORD是unsigned short类型的另一个别名。(2) 矩形结构类型SMALL_RECT及其结构指针类型PSMALL_RECTtypedef struct _SMALL_RECT SHORT Left;SHORT Top;SHORT Right;SHORT Bottom; SMALL_RECT, *PSMALL_RECT;包括四个成员Left、Top、Right和Bottom,分别表示矩形区域左上角和右下角在屏幕上的坐标。成员类型SHORT是short类型的别名。(3) 控制台光标信息结构类型CONSOLE_CURSOR_INFO及其结构指针类型PCONSOLE_CURSOR_INFOtypedef struct _CONSOLE_CURSOR_INFO DWORDdwSize;BOOLbVisible; CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;包括两个成员dwSize和bVisible。成员dwSize的值表示光标的大小,取值范围为1-100;当为1时,光标最小,仅是一条最靠下的水平细线;当为100时,光标最大,为一个字符大小的方块。成员bVisible表明光标是否可见,取值为TRUE或FALSE。此结构体中的DWORD是unsigned long类型的别名。(4) 坐标结构类型COORD及其结构指针类型PCOORDtypedef struct _COORD SHORT X;SHORT Y; COORD, *PCOORD;包括两个成员X和Y,分别表示横坐标(列数)和纵坐标(行数)。此结构类型数据除了可表示屏幕上的坐标外,还可用来表示矩形区域的大小,即宽度(X)和高度(Y)。(5) 控制台屏幕缓冲区信息结构类型CONSOLE_SCREEN_BUFFER_INFO及其结构指针类型PCONSOLE_SCREEN_BUFFER_INFOtypedef struct _CONSOLE_SCREEN_BUFFER_INFO COORDdwSize;COORDdwCursorPosition;WORDwAttributes;SMALL_RECT srWindow;COORDdwMaximumWindowSize; CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;成员dwSize表示屏幕区域的大小,即宽度和高度;成员dwCursorPosition表示屏幕中光标的位置;成员wAttributes表示当前字符的颜色属性;srWindow表示当前窗口显示的大小和位置;dwMaximumWindowSize表示最大的窗口缓冲区大小。(6) 按键事件记录结构类型KEY_EVENT_RECORDtypedef struct _KEY_EVENT_RECORD BOOL bKeyDown;WORD wRepeatCount;WORD wVirtualKeyCode;WORD wVirtualScanCode;union WCHAR UnicodeChar;CHAR AsciiChar; uChar;DWORD dwControlKeyState; KEY_EVENT_RECORD;6个成员分别表示按键时的相关状态和信息。成员bKeyDown类型为BOOL,取值TRUE表示键按下,FALSE表示键释放;成员wRepeatCount表示按键次数;成员wVirtualKeyCode表示虚拟键代码;成员wVirtualScanCode表示虚拟扫描码;成员uChar表示按键对应字符的ASCII码或Unicode码,如果按下非字符键,码值为0;成员dwControlKeyState表示控制键状态,它可以是CAPSLOCK_ON(大写锁定灯亮)、ENHANCED_KEY(按下扩展键)、LEFT_ALT_PRESSED(按下左ALT键)、LEFT_CTRL_PRESSED(按下左CTRL键)、NUMLOCK_ON (数字键锁定灯亮)、RIGHT_ALT_PRESSED(按下右ALT键)、RIGHT_CTRL_PRESSED(按下右CTRL键)、SCROLLLOCK_ON(屏幕滚动锁定灯亮)和SHIFT_PRESSED(按下SHIFT键)中的一个或多个值的组合。(7) 鼠标事件记录结构类型MOUSE_EVENT_RECORDtypedef struct _MOUSE_EVENT_RECORD COORD dwMousePosition;DWORD dwButtonState;DWORD dwControlKeyState;DWORD dwEventFlags; MOUSE_EVENT_RECORD;4个成员分别表示操作鼠标时的相关状态和信息。成员dwMousePosition表示鼠标当前位置;成员dwButtonState反映了用户按下鼠标按钮的情况,取值为以下符号常量:FROM_LEFT_1ST_BUTTON_PRESSED值为1,表示最左边按钮;RIGHTMOST_BUTTON_PRESSED值为2,表示最右边按钮;FROM_LEFT_2ND_BUTTON_PRESSED值为4,表示左起第二个按钮;FROM_LEFT_3RD_BUTTON_PRESSED值为8,表示左起第三个按钮;FROM_LEFT_4TH_BUTTON_PRESSED 值为16,表示左起第四个按钮当同时按下多个按钮时,dwButtonState的值为各个按钮对应符号常量进行按位或运算的结果,等同于它们的算术和;成员dwEventFlags表示鼠标的事件,如DOUBLE_CLICK(双击)、MOUSE_MOVED(移动)和MOUSE_WHEELED(滚轮滚动,只适用于Windows 2000/XP);成员dwControlKeyState的含义同于上面介绍的按键事件记录结构中同名成员。(8) 窗口缓冲区大小记录结构类型WINDOW_BUFFER_SIZE_RECORDtypedef struct _WINDOW_BUFFER_SIZE_RECORD COORD dwSize; WINDOW_BUFFER_SIZE_RECORD;成员dwSize表示窗口缓冲区的宽度和高度。(9) 菜单事件记录结构类型MENU_EVENT_RECORD及其结构指针类型PMENU_EVENT_RECORDtypedef struct _MENU_EVENT_RECORD UINT dwCommandId; MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;成员dwCommandId表示菜单项对应的命令标志,其类型UNIT是unsigned int的别名。(10) 焦点事件记录结构类型FOCUS_EVENT_RECORDtypedef struct _FOCUS_EVENT_RECORD BOOL bSetFocus; FOCUS_EVENT_RECORD;成员bSetFocus表示是否设置焦点。菜单事件和焦点事件由系统保留使用。(11) 输入记录结构类型INPUT_RECORD及其结构指针类型PINPUT_RECORDtypedef struct _INPUT_RECORD WORD EventType;union KEY_EVENT_RECORD KeyEvent;MOUSE_EVENT_RECORD MouseEvent;WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;MENU_EVENT_RECORD MenuEvent;FOCUS_EVENT_RECORD FocusEvent; Event; INPUT_RECORD, *PINPUT_RECORD;成员EventType表明输入产生于何种类型事件,取值为以下符号常量:KEY_EVENT值为1,代表按键事件;MOUSE_EVENT值为2,代表鼠标事件;WINDOW_BUFFER_SIZE_EVENT值为4,代表改变窗口缓冲区大小事件;MENU_EVENT值为8,代表菜单事件;FOCUS_EVENT值为16,代表焦点事件。成员Event是枚举类型,其成员存放相应事件的记录内容。2. 相关库函数用法(按函数名称排序)(1) 关闭句柄CloseHandle功能:关闭一个内核对象。函数原型:BOOL WINAPI CloseHandle( HANDLE hObject); 参数说明:hObject输入代表一个已打开对象的句柄。返回值:如果函数调用成功,返回值为非0。如果函数调用失败,返回值为0。备注:若在线程执行完之后,没有调用CloseHandle,在进程执行期间,将会造成内核对象的泄露,相当于句柄泄露,但不同于内存泄露,这势必会对系统的效率带来一定程度上的负面影响。但当进程结束退出后,系统会自动清理这些资源。(2) 创建控制台屏幕缓冲区CreateConsoleScreenBuffer功能:创建控制台屏幕缓冲区。函数原型:HANDLE WINAPI CreateConsoleScreenBuffer( DWORD dwDesiredAccess, DWORD dwShareMode, const SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwFlags, LPVOID lpScreenBufferData);参数说明:dwDesiredAccess输入控制台屏幕缓冲区的可访问权限。访问权限包括:GENERIC_READ(0x80000000)和GENERIC_WRITE(0x40000000)。GENERIC_READ表示允许程序从控制台屏幕缓冲区中读取数据;GENERIC_WRITE表示允许程序向屏幕缓冲区写数据。dwShareMode输入参数值取0表示表示缓冲区不可共享,或者取一到多个下列值。取值含义FILE_SHARE_READ0x00000001其他开放操作可以在控制台屏幕缓冲区上完成读访问操作。FILE_SHARE_WRITE0x00000002其他开放操作可以在控制台屏幕缓冲区上完成写访问操作。lpSecurityAttributes输入,可选SECURITY_ATTRIBUTES结构指针,确定返回的句柄能否被子进程继承。如果lpSecurityAttributes为NULL,则表示句柄不能继承。dwFlags输入所创建控制台屏幕缓冲区的类型。唯一支持的屏幕缓冲区类型为CONSOLE_TEXTMODE_BUFFER。lpScreenBufferData保留保留,值必须设为NULL。返回值:如果函数调用成功,返回值为新控制台屏幕缓冲区的句柄。如果函数调用失败,返回值为INVALID_HANDLE_VALUE。备注:一个控制台可拥有多个屏幕缓冲区,但只有一个活动屏幕缓冲区。非活动屏幕缓冲区可进行读和写访问,但只有活动屏幕缓冲区可显示。将新的屏幕缓冲区设为活动屏幕缓冲区,使用函数SetConsoleActiveScreenBuffer。调用进程可在任何需要控制台屏幕缓冲区句柄的函数中使用本函数返回的句柄,并受参数dwDesiredAccess所指定访问权限的限制。关闭控制台屏幕缓冲区句柄,使用函数CloseHandle。(3) 填充字符属性FillConsoleOutputAttribute功能:从屏幕缓冲区中指定的坐标位置开始,为指定数量的字符单元设置字符属性。函数原型:BOOL WINAPI FillConsoleOutputAttribute( HANDLE hConsoleOutput, WORD wAttribute, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfAttrsWritten);参数说明:hConsoleOutput输入控制台屏幕缓冲区句柄。该句柄必须拥有GENERIC_WRITE访问权限。wAttribute输入写到控制台屏幕缓冲区的属性。nLength输入将被设置成指定颜色属性的字符单元数目。dwWriteCoord输入一个坐标值,用来指定被设置属性的单元中第一个字符的坐标。lpNumberOfAttrsWritten输出指向变量的指针,变量用来存放被设置属性字符单元的实际数目。返回值:如果函数调用成功,返回值为非0。如果函数调用失败,返回值为0。备注:如果被设置属性的字符单元数目超出控制台屏幕缓冲区指定行的末端,那么将会设置下一行字符单元的属性。如果字符单元数目超出控制台屏幕缓冲区的末端,那么在末端以前的字符单元属性给设置。输出到这些位置上的字符值不会改变。(4) 填充指定数据的字符FillConsoleOutputCharacter功能:从控制台屏幕缓冲区指定坐标开始,将一个字符输出指定次数。函数原型:BOOL WINAPI FillConsoleOutputCharacter( HANDLE hConsoleOutput, TCHAR cCharacter, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfCharsWritten);参数说明:hConsoleOutput输入控制台屏幕缓冲区句柄。该句柄必须拥有GENERIC_WRITE访问权限。cCharacter输入输出到控制台屏幕缓冲区的字符。nLength输入字符应被输出到字符单元的数目。dwWriteCoord输入一个坐标值,用来指定字符输出到的第一个单元字符坐标。lpNumberOfCharsWritten输出指向变量的指针,变量用来存放实际输出到控制台屏幕缓冲区的字符数目。返回值:如果函数调用成功,返回值为非0。如果函数调用失败,返回值为0。备注:如果输出字符的数目超出控制台屏幕缓冲区指定行的末端,字符将被输出到下一行。如果字符数目超出控制台屏幕缓冲区的末端,字符输出到控制台屏幕缓冲区末端为止。(5) 获取光标信息GetConsoleCursorInfo功能:获取指定控制台屏幕缓冲区中光标的相关信息,包括光标的大小和可见性。函数原型:BOOL WINAPI GetConsoleCursorInfo( HANDLE hConsoleOutput, PCONSOLE_CURSOR_INFO lpConsoleCursorInfo);参数说明:hConsoleOutput输入控制台屏幕缓冲区句柄。该句柄必须拥有GENERIC_READ访问权限。lpConsoleCursorInfo输出CONSOLE_CURSOR_INFO结构指针,用来存放控制台光标的相关信息。返回值:如果函数调用成功,返回值为非0。如果函数调用失败,返回值为0。(6) 函数GetConsoleScreenBufferInfo功能:获取指定的控制台屏幕缓冲区信息函数原型:BOOL WINAPI GetConsoleScreenBufferInfo( HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);参数说明:hConsoleOutput输入该控制台屏幕缓冲区句柄,此句柄必须具有GENERIC_READ访问权限。lpConsoleScreenBufferInfo输出指向CONSOLE_SCREEN_BUFFER_INFO结构的指针,用来存放控制台屏幕缓冲区信息。返回值:如果函数调用成功,返回值为非零。如果函数调用失败,返回值为零。备注:修改在CONSOLE_SCREEN_BUFFER_INFO结构的成员srWindow中返回的矩形区,然后将其传递给函数SetConsoleWindowInfo,可在窗口中滚动该控制台屏幕缓冲区,和改变窗口的大小。在CONSOLE_SCREEN_BUFFER_INFO结构中返回的所有坐标都是字符单元坐标,其中原点(0, 0)位于控制台屏幕缓冲区的左上角。(7) 获取控制台标题GetConsoleTitle功能:获取当前控制台窗口的标题。函数原型:DWORD WINAPI GetConsoleTitle( LPTSTR lpConsoleTitle, DWORD nSize);参数说明:lpConsoleTitle输出指向接收标题字符串的缓冲区指针。缓冲区大小要求小于64K。如果缓冲区太小而无法存下整个标题,函数将存满缓冲区为止,最后用空字符作为字符串结束标志。nSize输入参数lpConsoleTitle所指向缓冲区的大小,即所能容纳字符的个数。返回值:如果函数调用成功,返回值是控制台窗口标题的长度。如果函数调用失败,返回值为0备注:设置控制台窗口标题,用函数SetConsoleTitle。获取原标题字符串,用函数GetConsoleOriginalTitle。本函数要么使用Unicode字符要么使用8位字符,这取决于控制台当前所采用的代码页。控制台代码页默认值为系统的OEM代码页。(8) 获取标准句柄GetStdHandle功能:获取指定标准设备(标准输入、标准输出、标准出错)的句柄。函数原型:HANDLE WINAPI GetStdHandle( DWORD nStdHandle); 参数说明:nStdHandle输入代表标准设备,可取以下值之一:取值含义STD_INPUT_HANDLE(DWORD)-10标准输入设备,初始为控制台输入缓冲区CONIN$STD_OUTPUT_HANDLE(DWORD)-11标准输出设备,初始为激活的控制台屏幕缓冲区CONOUT$STD_ERROR_HANDLE(DWORD)-12标准出错设备,初始为激活的控制台屏幕缓冲区CONOUT$返回值:如果函数调用成功,返回值为指定设备的句柄,或为调用函数SetStdHandle后设置的重定向句柄。该句柄具有GENERIC_READ和GENERIC_WRITE访问权限,除非应用程序使用函数SetStdHandle设置了具有较小访问权的标准句柄。如果函数调用失败,返回值为INVALID_HANDLE_VALUE(常量值为-1)。如果应用程序没有关联的标准句柄(比如运行在交互式桌面的服务程序),并且没有将标准句柄重新定向,返回值为NULL。备注:“句柄”是Windows最常用的概念。它通常用来标识Windows资源(如菜单、图标、窗口等)和设备等对象。虽然可以把句柄理解为一个指针变量类型,但它不是对象所在的地址,而是对象在Windows系统内部表的索引值。应用程序需要从控制台读数据或向控制台写数据时,可以使用函数GetStdHandle返回的句柄。控制台在创建时,标准输入句柄是控制台的输入缓冲区句柄,而标准输出句柄和标准出错句柄是控制台的激活屏幕缓冲区句柄。这些句柄可以被任何一个控制台操作函数用来访问控制台输入缓冲区或屏幕缓冲区。后面将陆续介绍与人机交互界面设计有关的控制台操作函数。进程的标准句柄可用函数SetStdHandle重新定向,这种情况下,函数GetStdHandle返回的是重定向后的句柄。(9) 读取控制台输入信息ReadConsoleInput功能:从控制台输入缓冲区读取数据,并将数据从缓冲区移除。函数原型:BOOL WINAPI ReadConsoleInput( HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead);参数说明:hConsoleInput输入控制台输入缓冲区句柄。句柄必须拥有GENERIC_READ访问权限。lpBuffer输出指向INPUT_RECORD结构数组的指针,用来存放读取的输入缓冲区数据。数组整体大小要小于64K。nLength输入参数lpBuffer所指数组的大小,以数组元素为单位。lpNumberOfEventsRead输出指向变量的指针,变量用来存放读取输入记录的数目。返回值:如果函数调用成功,返回值为非0。如果函数调用失败,返回值为0。备注:如果参数nLength的值大于缓冲区中可读取记录的数目,则实际读取的记录数目为可读记录数目。输入缓冲区输入记录为空时,函数处于等待状态,直到至少读到一条输入记录才会返回。获取控制台输入缓冲区中未读输入记录数目,使用函数GetNumOfConsoleInputEvents。从控制台输入缓冲区读取输入记录但不移除,使用函数PeekConsoleInput。清除控制台输入缓冲区中所有未读记录,使用函数FlushConsoleInputBuffer。(10) 滚动控制台屏幕缓冲区ScrollConsoleScreenBuffer功能:移动屏幕缓冲区中的数据块。移动效果可以限制在一块指定的剪切矩形区域,因而在剪切矩形区域之外的屏幕缓冲区内容不会变化。函数原型:BOOL WINAPI ScrollConsoleScreenBuffer( HANDLE hConsoleOutput, const SMALL_RECT *lpScrollRectangle, const SMALL_RECT *lpClipRectangle, COORD dwDestinationOrigin, const CHAR_INFO *lpFill);参数说明:hConsoleOutput输入控制台屏幕缓冲区句柄。该句柄必须拥有GENERIC_READ访问权限。lpScrollRectangle输入矩形结构指针,所指向矩形结构的成员指定了将被移动的屏幕缓冲区矩形区域左上角和右下角的坐标。lpClipRectangle输入,可选矩形结构指针,所指向矩形结构的成员指定了将受影响的屏幕缓冲区矩形区域左上角和右下角的坐标。指针值可为NULL。dwDestinationOrigin输入指定lpClipRectangle内容移到新位置的左上角坐标,以字符为单位。lpFill输入字符信息结构指针,指定用于填充因移动而产生空白区的字符和颜色属性。返回值:如果函数调用成功,则返回非零值。如果函数调用失败,则返回0。(11) 设置活动屏幕缓冲区SetConsoleActiveScreenBuffer功能:将指定的屏幕缓冲区设为当前被显示的控制台屏幕缓冲区。函数原型:BOOL WINAPI SetConsoleActiveScreenBuffer( HANDLE hConsoleOutput);参数说明:hConsoleOutput输入控制台屏幕缓冲区句柄。返回值:如果函数调用成功,返回值为非0。如果函数调用失败,返回值为0。备注:一个控制台可以拥有多个屏幕缓冲区。函数SetConsoleActiveScreenBuffer设定哪个可被显示。可以向非活动屏幕缓冲区输出数据,然后用SetConsoleActiveScreenBuffer来显示该缓冲区的内容。(12) 设置光标信息SetConsoleCursorInfo功能:设置指定控制台屏幕缓冲区光标的大小和可见性。函数原型:BOOL WINAPI SetConsoleCursorInfo( HANDLE hConsoleOutput, const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo);参数说明:hConsoleOutput输入控制台屏幕缓冲区句柄。该句柄必须拥有GENERIC_WRITE访问权限。lpConsoleCursorInfo输入CONSOLE_CURSOR_INFO结构指针,其中数据用于设置控制台屏幕缓冲区光标属性。返回值:如果函数调用成功,返回值为非0。如果函数调用失败,返回值为0。备注:当屏幕缓冲区光标可见时,其外观可以改变,变化范围从完全充满一个字符单元到显示在字符单元底部的一条水平线。CONSOLE_CURSOR_INFO结构的成员dwSize指定光标占字符单元空间的百分比,小于1或大于100时,函数调用失败。(13) 设置控制台光标位置SetConsoleCursorPosition功能:设置指定的控制台屏幕缓冲区中光标位置。函数原型:BOOL WINAPI SetConsoleCursorPosition( HANDLE hConsoleOutput, COORD dwCursorPosition);参数说明:hConsoleOutput输入控制台屏幕缓冲区的句柄。句柄必须拥有GENERIC_READ访问权限。dwCursorPosition输入用来指定光标新位置的坐标值。坐标值必须在控制台屏幕缓冲区范围内。返回值:如果函数调用成功,返回值为非零。如果函数调用失败,返回值为零。备注:光标位置决定高级I/O函数输出或回显字符在屏幕上显示的位置。获取光标当前位置,使用函数GetConsoleScreenBufferInfo。(14) 设置代码页SetConsoleOutputCP功能:设置与调用进程相关联的控制台所使用的输出代码页。控制台用输出代码页将各种函数输出的字符值映射到控制台窗口中显示的图像。函数原型:BOOL WINAPI SetConsoleOutputCP( UINT wCodePageID);参数说明:wCodePageID输入将要设置的代码页标识码值。返回值:函数调用成功,返回值为非0。函数调用失败,返回值为0。备注:代码页将256个字符编码映射到各个单独字符。不同的代码页包括不同的特殊字符,这些字符专门为某种语言或某种语言群所定制。查看操作系统安装或支持的代码页,使用函数EnumSystemCodePages。本地计算机可用的代码页标识码值存放在注册表以下键值:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsCodePage但是,用函数EnumSystemCodePages列出代码页更好些,这是因为在不同版本的Windows系统中注册表可能不一样。判断某特殊代码页是否有效,使用函数IsValidCodePage。获取包括名称在内的更多关于代码页的信息,使用函数GetCPInfoEx。可用代码页标识码值表如下:代码页(Code page)说明1258越南文1257波罗的海文1256阿拉伯文1255希伯来文1254土耳其语1253希腊文1252拉丁文(ANSI)1251斯拉夫文1250中欧文950繁体中文949韩文936简体中文932日文874泰文850使用多种语言(MS-DOS拉丁文)437MS-DOS美语/英语获取控制台当前的输出代码页,使用函数GetConsoleOutputCP。设置和查看控制台的输入代码页,使用函数SetConsoleCP和GetConsoleCP。(15) 设置控制台屏幕缓冲区大小SetConsoleScreenBufferSize功能:改变指定控制台屏幕缓冲区的大小。函数原型:BOOL WINAPI SetConsoleScreenBufferSize( HANDLE hConsoleOutput, COORD dwSize);参数说明:hConsoleOutput输入该控制台屏幕缓冲区句柄。此句柄必须具有GENERIC_READ访问权限。dwSize输入该控制台屏幕缓冲区的新大小,以字符行数和列数为单位。所指定的宽度和高度不能小于控制台屏幕缓冲区窗口的宽度和高度。返回值:如果函数调用成功,返回值为非零。如果函数调用失败,返回值为0。(16) 设置控制台文本属性SetConsoleTextAttribute功能:设置由函数WriteConsole输出或由函数ReadConsole回显到屏幕缓冲区字符的属性。函数对函数调用后输出的文本产生影响。函数原型:BOOL WINAPI SetConsoleTextAttribute( HANDLE hConsoleOutput, WORD wAttributes);参数说明:hConsoleOutput输入控制台屏幕缓冲区句柄。该句柄必须拥有GENERIC_READ访问权限。wAttributes输入字符属性。返回值:如果函数调用成功,返回值为非零。如果函数调用失败,返回值为0。备注:获取屏幕缓冲区当前颜色属性,调用函数GetConsoleScreenBufferInfo。(17) 设置控制台标题SetConsoleTitle功能:设置当前控制台窗口标题。函数原型:BOOL WINAPI SetConsoleTitle( LPCTSTR lpConsoleTitle );参数说明:lpConsoleTitle输入将被显示在控制台窗口标题栏的字符串,大小必须小于64K。返回值:如果函数调用成功,返回值为非零。如果函数调用失败,返回值为零。备注:程序结束时,系统恢复原控制台标题。(18) 设置控制台窗口位置和大小SetConsoleWindowInfo功能:设置控制台屏幕缓冲区窗口当前的大小和位置。函数原型:BOOL WINAPI SetConsoleWindowInfo( HANDLE hConsoleOutput, BOOL bAbsolute, const SMALL_RECT *lpConsoleWindow);参数说明:hConsoleOutput输入控制台屏幕缓冲区句柄。该句柄必须拥有GENERIC_READ访问权限。bAbsolute输入如果此参数值为TRUE,则第三个参数指定的是窗口左上角和右下角在控制台屏幕缓冲区中的绝对坐标;如果此参数值为FALSE,则第三个参数指定的是窗口左上角和右下角以它们当前位置为参考的相对坐标。lpConsoleWindow输入矩形结构指针,所指向的矩形结构类型数据用于指定窗口左上角和右下角的新位置。返回值:如果函数调用成功,则返回非零值。如果函数调用失败,返回零。备注:如果指定的窗口矩形区域超出了控制台屏幕缓冲区的边界,则函数调用失败。即窗口矩形区域的Top和Left不得小于0,而Bottom和Right不得大于(屏幕缓冲区高度-1)和(屏幕缓冲区宽度-1)。如果Right=left或Bottom=Top,函数也将调用失败。在控制台拥有多个屏幕缓冲区时,改变其中一个屏幕缓冲区中的窗口位置不会影响到窗口在其他屏幕缓冲区中的位置。获取屏幕缓冲区窗口当前的大小和位置,使用函数GetConsoleScreenBufferInfo。(19) 写控制台WriteConsole功能:从当前光标位置开始向控制台屏幕缓冲区输出字符串。函数原型:BOOL WINAPI WriteConsole( HANDLE hConsoleOutput, const VOID *lpBuffer, DWORD nNumberOfCharsToWrite, LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved);参数说明:hConsoleOutput输入控制台屏幕缓冲区句柄。该句柄必须拥有GENERIC_WRITE访问权限。lpBuffer输入指向缓冲区的指针,缓冲区中包含了将被输出到控制台屏幕缓冲区的字符。大小必须小于64K。nNumberOfCharsToWrite输入将被输出的字符数。如果大小超过64KB,函数将因ERROR_NOT_ENOUGH_MEMORY而调用失败。lpNumberOfCharsWritten输出指向变量的指针,变量用来存放实际输出的字符数。lpReserved保留;必须为NULL。返回值:如果函数调用成功,返回值为非0。如果函数调用失败,返回值为0。备注:函数WriteConsole在当前光标位置向控制台屏幕缓冲区输出字符。光标位置随字符输出而移动。函数SetConsoleCursorPosition可设置当前光标位置。(20) 向指定区域写带属性的字符WriteConsoleOutput功能:在控制台屏幕缓冲区指定的矩形字符单元块上输出带颜色属性的字符信息。输出数据来自于源缓冲区指定位置上相应大小的矩形字符单元块。函数原型:BOOL WINAPI WriteConsoleOutput( HANDLE hConsoleOutput, const CHAR_INFO *lpBuffer, COORD dwBufferSize, COORD dwBufferCoord, PSMALL_RECT lpWriteRegion);参数说明:hConsoleOutput输入控制台屏幕缓冲区句柄。该句柄必须拥有GENERIC_WRITE访问权限。lpBuffer输入用于存放将被输出到控制台屏幕缓冲区的数据。该指针所指向的内存缓冲区可看作一个二维CHAR_INFO类型结构数组,数组的大小由参数dwBufferSize指定。数组整体字节数必须小于64K。dwBufferSize输入参数lpBuffer所指向的数据缓冲区大小,以字符单元为单位。该COORD类型数据的X成员表示列数,Y成员表示行数。dwBufferCoord输入所要输出的数据在由参数lpBuffer所指向数据缓冲区中的位置。一般初值为0,0,表示从数据缓冲区的第一个单元开始输出。lpWriteRegion输入, 输出SMALL_RECT类型的指针。作为输入参数,所指结构成员指定数据输出的控制台屏幕缓冲区矩
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 侯车亭施工合同4篇
- 高中学校食品供货合同2篇
- 新解读《GB-T 31006-2014自动分拣过程包装物品条码规范》
- 年会设备租赁合同范本
- 新房全款代购合同范本
- 合伙开汽修合同范本
- 门窗护栏施工合同范本
- 休闲餐饮出租合同范本
- 果蔬分拣合同范本
- 邮政集团柜员合同范本
- 医药药品采购平台建设方案
- 人力资源招聘流程规范及操作手册
- 颌面外科清创缝合
- 结核患者管理方案模板(3篇)
- 人教版数学二年级上册第一单元 分类与整 理 综合素养测评A卷(含答案)
- 2025年北京市公务员考试行测真题及答案详解参考
- 物料定位管理办法
- 2025至2030非晶合金变压器行业市场占有率及投资前景评估规划报告
- 护理专业话术分享
- GB/T 16432-2025康复辅助器具分类和术语
- 公司投标奖罚管理办法
评论
0/150
提交评论