您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > CodeBlock下的人机交互界面设计
1附录6控制台函数用法说明课程设计还应该参考附录4和附录5附录4例子程序中用到的dorm.h头文件内容附录5编程规范头文件wincon.h中给出了控制台函数的原型声明及相关类型声明。这里对课程设计中例子程序所用到数据类型和函数的用法进行了说明。1.相关数据类型(1)字符信息结构类型CHAR_INFO及其结构指针类型PCHAR_INFOtypedefstruct_CHAR_INFO{union{WCHARUnicodeChar;CHARAsciiChar;}Char;WORDAttributes;}CHAR_INFO,*PCHAR_INFO;包括两个成员。成员Char存放字符的ASCII码值或Unicode码值,成员Attributes存放字符的颜色属性(前景色和背景色)。成员类型WCHAR是宽字符类型,是unsignedshort类型的别名;CHAR是char类型的别名;WORD是unsignedshort类型的另一个别名。(2)矩形结构类型SMALL_RECT及其结构指针类型PSMALL_RECTtypedefstruct_SMALL_RECT{SHORTLeft;SHORTTop;SHORTRight;SHORTBottom;}SMALL_RECT,*PSMALL_RECT;包括四个成员Left、Top、Right和Bottom,分别表示矩形区域左上角和右下角在屏幕上的坐标。成员类型SHORT是short类型的别名。(3)控制台光标信息结构类型CONSOLE_CURSOR_INFO及其结构指针类型PCONSOLE_CURSOR_INFOtypedefstruct_CONSOLE_CURSOR_INFO{DWORDdwSize;BOOLbVisible;}CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;包括两个成员dwSize和bVisible。成员dwSize的值表示光标的大小,取值范围为1-100;当为1时,光标最小,仅是一条最靠下的水平细线;当为100时,光标最大,为一个字符大小的方块。成员bVisible表明光标是否可见,取值为TRUE或FALSE。此结构体中的DWORD是unsignedlong类型的别名。(4)坐标结构类型COORD及其结构指针类型PCOORDtypedefstruct_COORD{SHORTX;SHORTY;}COORD,*PCOORD;包括两个成员X和Y,分别表示横坐标(列数)和纵坐标(行数)。此结构类型数据除了可表示屏幕上的坐标外,还可用来表示矩形区域的大小,即宽度(X)和高度(Y)。(5)控制台屏幕缓冲区信息结构类型CONSOLE_SCREEN_BUFFER_INFO及其结构指针类型PCONSOLE_SCREEN_BUFFER_INFOtypedefstruct_CONSOLE_SCREEN_BUFFER_INFO{2COORDdwSize;COORDdwCursorPosition;WORDwAttributes;SMALL_RECTsrWindow;COORDdwMaximumWindowSize;}CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;成员dwSize表示屏幕区域的大小,即宽度和高度;成员dwCursorPosition表示屏幕中光标的位置;成员wAttributes表示当前字符的颜色属性;srWindow表示当前窗口显示的大小和位置;dwMaximumWindowSize表示最大的窗口缓冲区大小。(6)按键事件记录结构类型KEY_EVENT_RECORDtypedefstruct_KEY_EVENT_RECORD{BOOLbKeyDown;WORDwRepeatCount;WORDwVirtualKeyCode;WORDwVirtualScanCode;union{WCHARUnicodeChar;CHARAsciiChar;}uChar;DWORDdwControlKeyState;}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_RECORDtypedefstruct_MOUSE_EVENT_RECORD{COORDdwMousePosition;DWORDdwButtonState;DWORDdwControlKeyState;DWORDdwEventFlags;}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(滚轮滚动,只适用于Windows2000/XP);成员dwControlKeyState的含义同于上面介绍的按键事件记录结构中同名成员。(8)窗口缓冲区大小记录结构类型WINDOW_BUFFER_SIZE_RECORDtypedefstruct_WINDOW_BUFFER_SIZE_RECORD{COORDdwSize;3}WINDOW_BUFFER_SIZE_RECORD;成员dwSize表示窗口缓冲区的宽度和高度。(9)菜单事件记录结构类型MENU_EVENT_RECORD及其结构指针类型PMENU_EVENT_RECORDtypedefstruct_MENU_EVENT_RECORD{UINTdwCommandId;}MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;成员dwCommandId表示菜单项对应的命令标志,其类型UNIT是unsignedint的别名。(10)焦点事件记录结构类型FOCUS_EVENT_RECORDtypedefstruct_FOCUS_EVENT_RECORD{BOOLbSetFocus;}FOCUS_EVENT_RECORD;成员bSetFocus表示是否设置焦点。菜单事件和焦点事件由系统保留使用。(11)输入记录结构类型INPUT_RECORD及其结构指针类型PINPUT_RECORDtypedefstruct_INPUT_RECORD{WORDEventType;union{KEY_EVENT_RECORDKeyEvent;MOUSE_EVENT_RECORDMouseEvent;WINDOW_BUFFER_SIZE_RECORDWindowBufferSizeEvent;MENU_EVENT_RECORDMenuEvent;FOCUS_EVENT_RECORDFocusEvent;}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功能:关闭一个内核对象。函数原型:BOOLWINAPICloseHandle(HANDLEhObject);参数说明:hObject[输入]代表一个已打开对象的句柄。返回值:如果函数调用成功,返回值为非0。4如果函数调用失败,返回值为0。备注:若在线程执行完之后,没有调用CloseHandle,在进程执行期间,将会造成内核对象的泄露,相当于句柄泄露,但不同于内存泄露,这势必会对系统的效率带来一定程度上的负面影响。但当进程结束退出后,系统会自动清理这些资源。(2)创建控制台屏幕缓冲区CreateConsoleScreenBuffer功能:创建控制台屏幕缓冲区。函数原型:HANDLEWINAPICreateConsoleScreenBuffer(DWORDdwDesiredAccess,DWORDdwShareMode,constSECURITY_ATTRIBUTES*lpSecurityAttributes,DWORDdwFlags,LPVOIDlpScreenBufferData);参数说明: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所指定访问权限的限制。关闭控制台屏
本文标题:CodeBlock下的人机交互界面设计
链接地址:https://www.777doc.com/doc-3262307 .html