




已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
附錄6 控制臺(tái)函數(shù)用法說(shuō)明課程設(shè)計(jì)還應(yīng)該參考附錄4和附錄5附錄4 例子程序中用到的dorm.h頭文件內(nèi)容附錄5 編程規(guī)范頭文件wincon.h中給出了控制臺(tái)函數(shù)的原型聲明及相關(guān)類型聲明。這里對(duì)課程設(shè)計(jì)中例子程序所用到數(shù)據(jù)類型和函數(shù)的用法進(jìn)行了說(shuō)明。1. 相關(guān)數(shù)據(jù)類型(1) 字符信息結(jié)構(gòu)類型CHAR_INFO及其結(jié)構(gòu)指針類型PCHAR_INFOtypedef struct _CHAR_INFO union WCHAR UnicodeChar;CHAR AsciiChar; Char;WORD Attributes; CHAR_INFO, *PCHAR_INFO;包括兩個(gè)成員。成員Char存放字符的ASCII碼值或Unicode碼值,成員Attributes存放字符的顏色屬性(前景色和背景色)。成員類型WCHAR是寬字符類型,是unsigned short類型的別名;CHAR是char類型的別名;WORD是unsigned short類型的另一個(gè)別名。(2) 矩形結(jié)構(gòu)類型SMALL_RECT及其結(jié)構(gòu)指針類型PSMALL_RECTtypedef struct _SMALL_RECT SHORT Left;SHORT Top;SHORT Right;SHORT Bottom; SMALL_RECT, *PSMALL_RECT;包括四個(gè)成員Left、Top、Right和Bottom,分別表示矩形區(qū)域左上角和右下角在屏幕上的坐標(biāo)。成員類型SHORT是short類型的別名。(3) 控制臺(tái)光標(biāo)信息結(jié)構(gòu)類型CONSOLE_CURSOR_INFO及其結(jié)構(gòu)指針類型PCONSOLE_CURSOR_INFOtypedef struct _CONSOLE_CURSOR_INFO DWORDdwSize;BOOLbVisible; CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;包括兩個(gè)成員dwSize和bVisible。成員dwSize的值表示光標(biāo)的大小,取值范圍為1-100;當(dāng)為1時(shí),光標(biāo)最小,僅是一條最靠下的水平細(xì)線;當(dāng)為100時(shí),光標(biāo)最大,為一個(gè)字符大小的方塊。成員bVisible表明光標(biāo)是否可見(jiàn),取值為TRUE或FALSE。此結(jié)構(gòu)體中的DWORD是unsigned long類型的別名。(4) 坐標(biāo)結(jié)構(gòu)類型COORD及其結(jié)構(gòu)指針類型PCOORDtypedef struct _COORD SHORT X;SHORT Y; COORD, *PCOORD;包括兩個(gè)成員X和Y,分別表示橫坐標(biāo)(列數(shù))和縱坐標(biāo)(行數(shù))。此結(jié)構(gòu)類型數(shù)據(jù)除了可表示屏幕上的坐標(biāo)外,還可用來(lái)表示矩形區(qū)域的大小,即寬度(X)和高度(Y)。(5) 控制臺(tái)屏幕緩沖區(qū)信息結(jié)構(gòu)類型CONSOLE_SCREEN_BUFFER_INFO及其結(jié)構(gòu)指針類型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表示屏幕區(qū)域的大小,即寬度和高度;成員dwCursorPosition表示屏幕中光標(biāo)的位置;成員wAttributes表示當(dāng)前字符的顏色屬性;srWindow表示當(dāng)前窗口顯示的大小和位置;dwMaximumWindowSize表示最大的窗口緩沖區(qū)大小。(6) 按鍵事件記錄結(jié)構(gòu)類型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個(gè)成員分別表示按鍵時(shí)的相關(guān)狀態(tài)和信息。成員bKeyDown類型為BOOL,取值TRUE表示鍵按下,F(xiàn)ALSE表示鍵釋放;成員wRepeatCount表示按鍵次數(shù);成員wVirtualKeyCode表示虛擬鍵代碼;成員wVirtualScanCode表示虛擬掃描碼;成員uChar表示按鍵對(duì)應(yīng)字符的ASCII碼或Unicode碼,如果按下非字符鍵,碼值為0;成員dwControlKeyState表示控制鍵狀態(tài),它可以是CAPSLOCK_ON(大寫鎖定燈亮)、ENHANCED_KEY(按下擴(kuò)展鍵)、LEFT_ALT_PRESSED(按下左ALT鍵)、LEFT_CTRL_PRESSED(按下左CTRL鍵)、NUMLOCK_ON (數(shù)字鍵鎖定燈亮)、RIGHT_ALT_PRESSED(按下右ALT鍵)、RIGHT_CTRL_PRESSED(按下右CTRL鍵)、SCROLLLOCK_ON(屏幕滾動(dòng)鎖定燈亮)和SHIFT_PRESSED(按下SHIFT鍵)中的一個(gè)或多個(gè)值的組合。(7) 鼠標(biāo)事件記錄結(jié)構(gòu)類型MOUSE_EVENT_RECORDtypedef struct _MOUSE_EVENT_RECORD COORD dwMousePosition;DWORD dwButtonState;DWORD dwControlKeyState;DWORD dwEventFlags; MOUSE_EVENT_RECORD;4個(gè)成員分別表示操作鼠標(biāo)時(shí)的相關(guān)狀態(tài)和信息。成員dwMousePosition表示鼠標(biāo)當(dāng)前位置;成員dwButtonState反映了用戶按下鼠標(biāo)按鈕的情況,取值為以下符號(hào)常量:FROM_LEFT_1ST_BUTTON_PRESSED值為1,表示最左邊按鈕;RIGHTMOST_BUTTON_PRESSED值為2,表示最右邊按鈕;FROM_LEFT_2ND_BUTTON_PRESSED值為4,表示左起第二個(gè)按鈕;FROM_LEFT_3RD_BUTTON_PRESSED值為8,表示左起第三個(gè)按鈕;FROM_LEFT_4TH_BUTTON_PRESSED 值為16,表示左起第四個(gè)按鈕當(dāng)同時(shí)按下多個(gè)按鈕時(shí),dwButtonState的值為各個(gè)按鈕對(duì)應(yīng)符號(hào)常量進(jìn)行按位或運(yùn)算的結(jié)果,等同于它們的算術(shù)和;成員dwEventFlags表示鼠標(biāo)的事件,如DOUBLE_CLICK(雙擊)、MOUSE_MOVED(移動(dòng))和MOUSE_WHEELED(滾輪滾動(dòng),只適用于Windows 2000/XP);成員dwControlKeyState的含義同于上面介紹的按鍵事件記錄結(jié)構(gòu)中同名成員。(8) 窗口緩沖區(qū)大小記錄結(jié)構(gòu)類型WINDOW_BUFFER_SIZE_RECORDtypedef struct _WINDOW_BUFFER_SIZE_RECORD COORD dwSize; WINDOW_BUFFER_SIZE_RECORD;成員dwSize表示窗口緩沖區(qū)的寬度和高度。(9) 菜單事件記錄結(jié)構(gòu)類型MENU_EVENT_RECORD及其結(jié)構(gòu)指針類型PMENU_EVENT_RECORDtypedef struct _MENU_EVENT_RECORD UINT dwCommandId; MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;成員dwCommandId表示菜單項(xiàng)對(duì)應(yīng)的命令標(biāo)志,其類型UNIT是unsigned int的別名。(10) 焦點(diǎn)事件記錄結(jié)構(gòu)類型FOCUS_EVENT_RECORDtypedef struct _FOCUS_EVENT_RECORD BOOL bSetFocus; FOCUS_EVENT_RECORD;成員bSetFocus表示是否設(shè)置焦點(diǎn)。菜單事件和焦點(diǎn)事件由系統(tǒng)保留使用。(11) 輸入記錄結(jié)構(gòu)類型INPUT_RECORD及其結(jié)構(gòu)指針類型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表明輸入產(chǎn)生于何種類型事件,取值為以下符號(hào)常量:KEY_EVENT值為1,代表按鍵事件;MOUSE_EVENT值為2,代表鼠標(biāo)事件;WINDOW_BUFFER_SIZE_EVENT值為4,代表改變窗口緩沖區(qū)大小事件;MENU_EVENT值為8,代表菜單事件;FOCUS_EVENT值為16,代表焦點(diǎn)事件。成員Event是枚舉類型,其成員存放相應(yīng)事件的記錄內(nèi)容。2. 相關(guān)庫(kù)函數(shù)用法(按函數(shù)名稱排序)(1) 關(guān)閉句柄CloseHandle功能:關(guān)閉一個(gè)內(nèi)核對(duì)象。函數(shù)原型:BOOL WINAPI CloseHandle( HANDLE hObject); 參數(shù)說(shuō)明:hObject輸入代表一個(gè)已打開(kāi)對(duì)象的句柄。返回值:如果函數(shù)調(diào)用成功,返回值為非0。如果函數(shù)調(diào)用失敗,返回值為0。備注:若在線程執(zhí)行完之后,沒(méi)有調(diào)用CloseHandle,在進(jìn)程執(zhí)行期間,將會(huì)造成內(nèi)核對(duì)象的泄露,相當(dāng)于句柄泄露,但不同于內(nèi)存泄露,這勢(shì)必會(huì)對(duì)系統(tǒng)的效率帶來(lái)一定程度上的負(fù)面影響。但當(dāng)進(jìn)程結(jié)束退出后,系統(tǒng)會(huì)自動(dòng)清理這些資源。(2) 創(chuàng)建控制臺(tái)屏幕緩沖區(qū)CreateConsoleScreenBuffer功能:創(chuàng)建控制臺(tái)屏幕緩沖區(qū)。函數(shù)原型:HANDLE WINAPI CreateConsoleScreenBuffer( DWORD dwDesiredAccess, DWORD dwShareMode, const SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwFlags, LPVOID lpScreenBufferData);參數(shù)說(shuō)明:dwDesiredAccess輸入控制臺(tái)屏幕緩沖區(qū)的可訪問(wèn)權(quán)限。訪問(wèn)權(quán)限包括:GENERIC_READ(0x80000000)和GENERIC_WRITE(0x40000000)。GENERIC_READ表示允許程序從控制臺(tái)屏幕緩沖區(qū)中讀取數(shù)據(jù);GENERIC_WRITE表示允許程序向屏幕緩沖區(qū)寫數(shù)據(jù)。dwShareMode輸入?yún)?shù)值取0表示表示緩沖區(qū)不可共享,或者取一到多個(gè)下列值。取值含義FILE_SHARE_READ0x00000001其他開(kāi)放操作可以在控制臺(tái)屏幕緩沖區(qū)上完成讀訪問(wèn)操作。FILE_SHARE_WRITE0x00000002其他開(kāi)放操作可以在控制臺(tái)屏幕緩沖區(qū)上完成寫訪問(wèn)操作。lpSecurityAttributes輸入,可選SECURITY_ATTRIBUTES結(jié)構(gòu)指針,確定返回的句柄能否被子進(jìn)程繼承。如果lpSecurityAttributes為NULL,則表示句柄不能繼承。dwFlags輸入所創(chuàng)建控制臺(tái)屏幕緩沖區(qū)的類型。唯一支持的屏幕緩沖區(qū)類型為CONSOLE_TEXTMODE_BUFFER。lpScreenBufferData保留保留,值必須設(shè)為NULL。返回值:如果函數(shù)調(diào)用成功,返回值為新控制臺(tái)屏幕緩沖區(qū)的句柄。如果函數(shù)調(diào)用失敗,返回值為INVALID_HANDLE_VALUE。備注:一個(gè)控制臺(tái)可擁有多個(gè)屏幕緩沖區(qū),但只有一個(gè)活動(dòng)屏幕緩沖區(qū)。非活動(dòng)屏幕緩沖區(qū)可進(jìn)行讀和寫訪問(wèn),但只有活動(dòng)屏幕緩沖區(qū)可顯示。將新的屏幕緩沖區(qū)設(shè)為活動(dòng)屏幕緩沖區(qū),使用函數(shù)SetConsoleActiveScreenBuffer。調(diào)用進(jìn)程可在任何需要控制臺(tái)屏幕緩沖區(qū)句柄的函數(shù)中使用本函數(shù)返回的句柄,并受參數(shù)dwDesiredAccess所指定訪問(wèn)權(quán)限的限制。關(guān)閉控制臺(tái)屏幕緩沖區(qū)句柄,使用函數(shù)CloseHandle。(3) 填充字符屬性FillConsoleOutputAttribute功能:從屏幕緩沖區(qū)中指定的坐標(biāo)位置開(kāi)始,為指定數(shù)量的字符單元設(shè)置字符屬性。函數(shù)原型:BOOL WINAPI FillConsoleOutputAttribute( HANDLE hConsoleOutput, WORD wAttribute, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfAttrsWritten);參數(shù)說(shuō)明:hConsoleOutput輸入控制臺(tái)屏幕緩沖區(qū)句柄。該句柄必須擁有GENERIC_WRITE訪問(wèn)權(quán)限。wAttribute輸入寫到控制臺(tái)屏幕緩沖區(qū)的屬性。nLength輸入將被設(shè)置成指定顏色屬性的字符單元數(shù)目。dwWriteCoord輸入一個(gè)坐標(biāo)值,用來(lái)指定被設(shè)置屬性的單元中第一個(gè)字符的坐標(biāo)。lpNumberOfAttrsWritten輸出指向變量的指針,變量用來(lái)存放被設(shè)置屬性字符單元的實(shí)際數(shù)目。返回值:如果函數(shù)調(diào)用成功,返回值為非0。如果函數(shù)調(diào)用失敗,返回值為0。備注:如果被設(shè)置屬性的字符單元數(shù)目超出控制臺(tái)屏幕緩沖區(qū)指定行的末端,那么將會(huì)設(shè)置下一行字符單元的屬性。如果字符單元數(shù)目超出控制臺(tái)屏幕緩沖區(qū)的末端,那么在末端以前的字符單元屬性給設(shè)置。輸出到這些位置上的字符值不會(huì)改變。(4) 填充指定數(shù)據(jù)的字符FillConsoleOutputCharacter功能:從控制臺(tái)屏幕緩沖區(qū)指定坐標(biāo)開(kāi)始,將一個(gè)字符輸出指定次數(shù)。函數(shù)原型:BOOL WINAPI FillConsoleOutputCharacter( HANDLE hConsoleOutput, TCHAR cCharacter, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfCharsWritten);參數(shù)說(shuō)明:hConsoleOutput輸入控制臺(tái)屏幕緩沖區(qū)句柄。該句柄必須擁有GENERIC_WRITE訪問(wèn)權(quán)限。cCharacter輸入輸出到控制臺(tái)屏幕緩沖區(qū)的字符。nLength輸入字符應(yīng)被輸出到字符單元的數(shù)目。dwWriteCoord輸入一個(gè)坐標(biāo)值,用來(lái)指定字符輸出到的第一個(gè)單元字符坐標(biāo)。lpNumberOfCharsWritten輸出指向變量的指針,變量用來(lái)存放實(shí)際輸出到控制臺(tái)屏幕緩沖區(qū)的字符數(shù)目。返回值:如果函數(shù)調(diào)用成功,返回值為非0。如果函數(shù)調(diào)用失敗,返回值為0。備注:如果輸出字符的數(shù)目超出控制臺(tái)屏幕緩沖區(qū)指定行的末端,字符將被輸出到下一行。如果字符數(shù)目超出控制臺(tái)屏幕緩沖區(qū)的末端,字符輸出到控制臺(tái)屏幕緩沖區(qū)末端為止。(5) 獲取光標(biāo)信息GetConsoleCursorInfo功能:獲取指定控制臺(tái)屏幕緩沖區(qū)中光標(biāo)的相關(guān)信息,包括光標(biāo)的大小和可見(jiàn)性。函數(shù)原型:BOOL WINAPI GetConsoleCursorInfo( HANDLE hConsoleOutput, PCONSOLE_CURSOR_INFO lpConsoleCursorInfo);參數(shù)說(shuō)明:hConsoleOutput輸入控制臺(tái)屏幕緩沖區(qū)句柄。該句柄必須擁有GENERIC_READ訪問(wèn)權(quán)限。lpConsoleCursorInfo輸出CONSOLE_CURSOR_INFO結(jié)構(gòu)指針,用來(lái)存放控制臺(tái)光標(biāo)的相關(guān)信息。返回值:如果函數(shù)調(diào)用成功,返回值為非0。如果函數(shù)調(diào)用失敗,返回值為0。(6) 函數(shù)GetConsoleScreenBufferInfo功能:獲取指定的控制臺(tái)屏幕緩沖區(qū)信息函數(shù)原型:BOOL WINAPI GetConsoleScreenBufferInfo( HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);參數(shù)說(shuō)明:hConsoleOutput輸入該控制臺(tái)屏幕緩沖區(qū)句柄,此句柄必須具有GENERIC_READ訪問(wèn)權(quán)限。lpConsoleScreenBufferInfo輸出指向CONSOLE_SCREEN_BUFFER_INFO結(jié)構(gòu)的指針,用來(lái)存放控制臺(tái)屏幕緩沖區(qū)信息。返回值:如果函數(shù)調(diào)用成功,返回值為非零。如果函數(shù)調(diào)用失敗,返回值為零。備注:修改在CONSOLE_SCREEN_BUFFER_INFO結(jié)構(gòu)的成員srWindow中返回的矩形區(qū),然后將其傳遞給函數(shù)SetConsoleWindowInfo,可在窗口中滾動(dòng)該控制臺(tái)屏幕緩沖區(qū),和改變窗口的大小。在CONSOLE_SCREEN_BUFFER_INFO結(jié)構(gòu)中返回的所有坐標(biāo)都是字符單元坐標(biāo),其中原點(diǎn)(0, 0)位于控制臺(tái)屏幕緩沖區(qū)的左上角。(7) 獲取控制臺(tái)標(biāo)題GetConsoleTitle功能:獲取當(dāng)前控制臺(tái)窗口的標(biāo)題。函數(shù)原型:DWORD WINAPI GetConsoleTitle( LPTSTR lpConsoleTitle, DWORD nSize);參數(shù)說(shuō)明:lpConsoleTitle輸出指向接收標(biāo)題字符串的緩沖區(qū)指針。緩沖區(qū)大小要求小于64K。如果緩沖區(qū)太小而無(wú)法存下整個(gè)標(biāo)題,函數(shù)將存滿緩沖區(qū)為止,最后用空字符作為字符串結(jié)束標(biāo)志。nSize輸入?yún)?shù)lpConsoleTitle所指向緩沖區(qū)的大小,即所能容納字符的個(gè)數(shù)。返回值:如果函數(shù)調(diào)用成功,返回值是控制臺(tái)窗口標(biāo)題的長(zhǎng)度。如果函數(shù)調(diào)用失敗,返回值為0備注:設(shè)置控制臺(tái)窗口標(biāo)題,用函數(shù)SetConsoleTitle。獲取原標(biāo)題字符串,用函數(shù)GetConsoleOriginalTitle。本函數(shù)要么使用Unicode字符要么使用8位字符,這取決于控制臺(tái)當(dāng)前所采用的代碼頁(yè)??刂婆_(tái)代碼頁(yè)默認(rèn)值為系統(tǒng)的OEM代碼頁(yè)。(8) 獲取標(biāo)準(zhǔn)句柄GetStdHandle功能:獲取指定標(biāo)準(zhǔn)設(shè)備(標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)出錯(cuò))的句柄。函數(shù)原型:HANDLE WINAPI GetStdHandle( DWORD nStdHandle); 參數(shù)說(shuō)明:nStdHandle輸入代表標(biāo)準(zhǔn)設(shè)備,可取以下值之一:取值含義STD_INPUT_HANDLE(DWORD)-10標(biāo)準(zhǔn)輸入設(shè)備,初始為控制臺(tái)輸入緩沖區(qū)CONIN$STD_OUTPUT_HANDLE(DWORD)-11標(biāo)準(zhǔn)輸出設(shè)備,初始為激活的控制臺(tái)屏幕緩沖區(qū)CONOUT$STD_ERROR_HANDLE(DWORD)-12標(biāo)準(zhǔn)出錯(cuò)設(shè)備,初始為激活的控制臺(tái)屏幕緩沖區(qū)CONOUT$返回值:如果函數(shù)調(diào)用成功,返回值為指定設(shè)備的句柄,或?yàn)檎{(diào)用函數(shù)SetStdHandle后設(shè)置的重定向句柄。該句柄具有GENERIC_READ和GENERIC_WRITE訪問(wèn)權(quán)限,除非應(yīng)用程序使用函數(shù)SetStdHandle設(shè)置了具有較小訪問(wèn)權(quán)的標(biāo)準(zhǔn)句柄。如果函數(shù)調(diào)用失敗,返回值為INVALID_HANDLE_VALUE(常量值為-1)。如果應(yīng)用程序沒(méi)有關(guān)聯(lián)的標(biāo)準(zhǔn)句柄(比如運(yùn)行在交互式桌面的服務(wù)程序),并且沒(méi)有將標(biāo)準(zhǔn)句柄重新定向,返回值為NULL。備注:“句柄”是Windows最常用的概念。它通常用來(lái)標(biāo)識(shí)Windows資源(如菜單、圖標(biāo)、窗口等)和設(shè)備等對(duì)象。雖然可以把句柄理解為一個(gè)指針變量類型,但它不是對(duì)象所在的地址,而是對(duì)象在Windows系統(tǒng)內(nèi)部表的索引值。應(yīng)用程序需要從控制臺(tái)讀數(shù)據(jù)或向控制臺(tái)寫數(shù)據(jù)時(shí),可以使用函數(shù)GetStdHandle返回的句柄??刂婆_(tái)在創(chuàng)建時(shí),標(biāo)準(zhǔn)輸入句柄是控制臺(tái)的輸入緩沖區(qū)句柄,而標(biāo)準(zhǔn)輸出句柄和標(biāo)準(zhǔn)出錯(cuò)句柄是控制臺(tái)的激活屏幕緩沖區(qū)句柄。這些句柄可以被任何一個(gè)控制臺(tái)操作函數(shù)用來(lái)訪問(wèn)控制臺(tái)輸入緩沖區(qū)或屏幕緩沖區(qū)。后面將陸續(xù)介紹與人機(jī)交互界面設(shè)計(jì)有關(guān)的控制臺(tái)操作函數(shù)。進(jìn)程的標(biāo)準(zhǔn)句柄可用函數(shù)SetStdHandle重新定向,這種情況下,函數(shù)GetStdHandle返回的是重定向后的句柄。(9) 讀取控制臺(tái)輸入信息ReadConsoleInput功能:從控制臺(tái)輸入緩沖區(qū)讀取數(shù)據(jù),并將數(shù)據(jù)從緩沖區(qū)移除。函數(shù)原型:BOOL WINAPI ReadConsoleInput( HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead);參數(shù)說(shuō)明:hConsoleInput輸入控制臺(tái)輸入緩沖區(qū)句柄。句柄必須擁有GENERIC_READ訪問(wèn)權(quán)限。lpBuffer輸出指向INPUT_RECORD結(jié)構(gòu)數(shù)組的指針,用來(lái)存放讀取的輸入緩沖區(qū)數(shù)據(jù)。數(shù)組整體大小要小于64K。nLength輸入?yún)?shù)lpBuffer所指數(shù)組的大小,以數(shù)組元素為單位。lpNumberOfEventsRead輸出指向變量的指針,變量用來(lái)存放讀取輸入記錄的數(shù)目。返回值:如果函數(shù)調(diào)用成功,返回值為非0。如果函數(shù)調(diào)用失敗,返回值為0。備注:如果參數(shù)nLength的值大于緩沖區(qū)中可讀取記錄的數(shù)目,則實(shí)際讀取的記錄數(shù)目為可讀記錄數(shù)目。輸入緩沖區(qū)輸入記錄為空時(shí),函數(shù)處于等待狀態(tài),直到至少讀到一條輸入記錄才會(huì)返回。獲取控制臺(tái)輸入緩沖區(qū)中未讀輸入記錄數(shù)目,使用函數(shù)GetNumOfConsoleInputEvents。從控制臺(tái)輸入緩沖區(qū)讀取輸入記錄但不移除,使用函數(shù)PeekConsoleInput。清除控制臺(tái)輸入緩沖區(qū)中所有未讀記錄,使用函數(shù)FlushConsoleInputBuffer。(10) 滾動(dòng)控制臺(tái)屏幕緩沖區(qū)ScrollConsoleScreenBuffer功能:移動(dòng)屏幕緩沖區(qū)中的數(shù)據(jù)塊。移動(dòng)效果可以限制在一塊指定的剪切矩形區(qū)域,因而在剪切矩形區(qū)域之外的屏幕緩沖區(qū)內(nèi)容不會(huì)變化。函數(shù)原型:BOOL WINAPI ScrollConsoleScreenBuffer( HANDLE hConsoleOutput, const SMALL_RECT *lpScrollRectangle, const SMALL_RECT *lpClipRectangle, COORD dwDestinationOrigin, const CHAR_INFO *lpFill);參數(shù)說(shuō)明:hConsoleOutput輸入控制臺(tái)屏幕緩沖區(qū)句柄。該句柄必須擁有GENERIC_READ訪問(wèn)權(quán)限。lpScrollRectangle輸入矩形結(jié)構(gòu)指針,所指向矩形結(jié)構(gòu)的成員指定了將被移動(dòng)的屏幕緩沖區(qū)矩形區(qū)域左上角和右下角的坐標(biāo)。lpClipRectangle輸入,可選矩形結(jié)構(gòu)指針,所指向矩形結(jié)構(gòu)的成員指定了將受影響的屏幕緩沖區(qū)矩形區(qū)域左上角和右下角的坐標(biāo)。指針值可為NULL。dwDestinationOrigin輸入指定lpClipRectangle內(nèi)容移到新位置的左上角坐標(biāo),以字符為單位。lpFill輸入字符信息結(jié)構(gòu)指針,指定用于填充因移動(dòng)而產(chǎn)生空白區(qū)的字符和顏色屬性。返回值:如果函數(shù)調(diào)用成功,則返回非零值。如果函數(shù)調(diào)用失敗,則返回0。(11) 設(shè)置活動(dòng)屏幕緩沖區(qū)SetConsoleActiveScreenBuffer功能:將指定的屏幕緩沖區(qū)設(shè)為當(dāng)前被顯示的控制臺(tái)屏幕緩沖區(qū)。函數(shù)原型:BOOL WINAPI SetConsoleActiveScreenBuffer( HANDLE hConsoleOutput);參數(shù)說(shuō)明:hConsoleOutput輸入控制臺(tái)屏幕緩沖區(qū)句柄。返回值:如果函數(shù)調(diào)用成功,返回值為非0。如果函數(shù)調(diào)用失敗,返回值為0。備注:一個(gè)控制臺(tái)可以擁有多個(gè)屏幕緩沖區(qū)。函數(shù)SetConsoleActiveScreenBuffer設(shè)定哪個(gè)可被顯示??梢韵蚍腔顒?dòng)屏幕緩沖區(qū)輸出數(shù)據(jù),然后用SetConsoleActiveScreenBuffer來(lái)顯示該緩沖區(qū)的內(nèi)容。(12) 設(shè)置光標(biāo)信息SetConsoleCursorInfo功能:設(shè)置指定控制臺(tái)屏幕緩沖區(qū)光標(biāo)的大小和可見(jiàn)性。函數(shù)原型:BOOL WINAPI SetConsoleCursorInfo( HANDLE hConsoleOutput, const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo);參數(shù)說(shuō)明:hConsoleOutput輸入控制臺(tái)屏幕緩沖區(qū)句柄。該句柄必須擁有GENERIC_WRITE訪問(wèn)權(quán)限。lpConsoleCursorInfo輸入CONSOLE_CURSOR_INFO結(jié)構(gòu)指針,其中數(shù)據(jù)用于設(shè)置控制臺(tái)屏幕緩沖區(qū)光標(biāo)屬性。返回值:如果函數(shù)調(diào)用成功,返回值為非0。如果函數(shù)調(diào)用失敗,返回值為0。備注:當(dāng)屏幕緩沖區(qū)光標(biāo)可見(jiàn)時(shí),其外觀可以改變,變化范圍從完全充滿一個(gè)字符單元到顯示在字符單元底部的一條水平線。CONSOLE_CURSOR_INFO結(jié)構(gòu)的成員dwSize指定光標(biāo)占字符單元空間的百分比,小于1或大于100時(shí),函數(shù)調(diào)用失敗。(13) 設(shè)置控制臺(tái)光標(biāo)位置SetConsoleCursorPosition功能:設(shè)置指定的控制臺(tái)屏幕緩沖區(qū)中光標(biāo)位置。函數(shù)原型:BOOL WINAPI SetConsoleCursorPosition( HANDLE hConsoleOutput, COORD dwCursorPosition);參數(shù)說(shuō)明:hConsoleOutput輸入控制臺(tái)屏幕緩沖區(qū)的句柄。句柄必須擁有GENERIC_READ訪問(wèn)權(quán)限。dwCursorPosition輸入用來(lái)指定光標(biāo)新位置的坐標(biāo)值。坐標(biāo)值必須在控制臺(tái)屏幕緩沖區(qū)范圍內(nèi)。返回值:如果函數(shù)調(diào)用成功,返回值為非零。如果函數(shù)調(diào)用失敗,返回值為零。備注:光標(biāo)位置決定高級(jí)I/O函數(shù)輸出或回顯字符在屏幕上顯示的位置。獲取光標(biāo)當(dāng)前位置,使用函數(shù)GetConsoleScreenBufferInfo。(14) 設(shè)置代碼頁(yè)SetConsoleOutputCP功能:設(shè)置與調(diào)用進(jìn)程相關(guān)聯(lián)的控制臺(tái)所使用的輸出代碼頁(yè)。控制臺(tái)用輸出代碼頁(yè)將各種函數(shù)輸出的字符值映射到控制臺(tái)窗口中顯示的圖像。函數(shù)原型:BOOL WINAPI SetConsoleOutputCP( UINT wCodePageID);參數(shù)說(shuō)明:wCodePageID輸入將要設(shè)置的代碼頁(yè)標(biāo)識(shí)碼值。返回值:函數(shù)調(diào)用成功,返回值為非0。函數(shù)調(diào)用失敗,返回值為0。備注:代碼頁(yè)將256個(gè)字符編碼映射到各個(gè)單獨(dú)字符。不同的代碼頁(yè)包括不同的特殊字符,這些字符專門為某種語(yǔ)言或某種語(yǔ)言群所定制。查看操作系統(tǒng)安裝或支持的代碼頁(yè),使用函數(shù)EnumSystemCodePages。本地計(jì)算機(jī)可用的代碼頁(yè)標(biāo)識(shí)碼值存放在注冊(cè)表以下鍵值:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsCodePage但是,用函數(shù)EnumSystemCodePages列出代碼頁(yè)更好些,這是因?yàn)樵诓煌姹镜腤indows系統(tǒng)中注冊(cè)表可能不一樣。判斷某特殊代碼頁(yè)是否有效,使用函數(shù)IsValidCodePage。獲取包括名稱在內(nèi)的更多關(guān)于代碼頁(yè)的信息,使用函數(shù)GetCPInfoEx。可用代碼頁(yè)標(biāo)識(shí)碼值表如下:代碼頁(yè)(Code page)說(shuō)明1258越南文1257波羅的海文1256阿拉伯文1255希伯來(lái)文1254土耳其語(yǔ)1253希臘文1252拉丁文(ANSI)1251斯拉夫文1250中歐文950繁體中文949韓文936簡(jiǎn)體中文932日文874泰文850使用多種語(yǔ)言(MS-DOS拉丁文)437MS-DOS美語(yǔ)/英語(yǔ)獲取控制臺(tái)當(dāng)前的輸出代碼頁(yè),使用函數(shù)GetConsoleOutputCP。設(shè)置和查看控制臺(tái)的輸入代碼頁(yè),使用函數(shù)SetConsoleCP和GetConsoleCP。(15) 設(shè)置控制臺(tái)屏幕緩沖區(qū)大小SetConsoleScreenBufferSize功能:改變指定控制臺(tái)屏幕緩沖區(qū)的大小。函數(shù)原型:BOOL WINAPI SetConsoleScreenBufferSize( HANDLE hConsoleOutput, COORD dwSize);參數(shù)說(shuō)明:hConsoleOutput輸入該控制臺(tái)屏幕緩沖區(qū)句柄。此句柄必須具有GENERIC_READ訪問(wèn)權(quán)限。dwSize輸入該控制臺(tái)屏幕緩沖區(qū)的新大小,以字符行數(shù)和列數(shù)為單位。所指定的寬度和高度不能小于控制臺(tái)屏幕緩沖區(qū)窗口的寬度和高度。返回值:如果函數(shù)調(diào)用成功,返回值為非零。如果函數(shù)調(diào)用失敗,返回值為0。(16) 設(shè)置控制臺(tái)文本屬性SetConsoleTextAttribute功能:設(shè)置由函數(shù)WriteConsole輸出或由函數(shù)ReadConsole回顯到屏幕緩沖區(qū)字符的屬性。函數(shù)對(duì)函數(shù)調(diào)用后輸出的文本產(chǎn)生影響。函數(shù)原型:BOOL WINAPI SetConsoleTextAttribute( HANDLE hConsoleOutput, WORD wAttributes);參數(shù)說(shuō)明:hConsoleOutput輸入控制臺(tái)屏幕緩沖區(qū)句柄。該句柄必須擁有GENERIC_READ訪問(wèn)權(quán)限。wAttributes輸入字符屬性。返回值:如果函數(shù)調(diào)用成功,返回值為非零。如果函數(shù)調(diào)用失敗,返回值為0。備注:獲取屏幕緩沖區(qū)當(dāng)前顏色屬性,調(diào)用函數(shù)GetConsoleScreenBufferInfo。(17) 設(shè)置控制臺(tái)標(biāo)題SetConsoleTitle功能:設(shè)置當(dāng)前控制臺(tái)窗口標(biāo)題。函數(shù)原型:BOOL WINAPI SetConsoleTitle( LPCTSTR lpConsoleTitle );參數(shù)說(shuō)明:lpConsoleTitle輸入將被顯示在控制臺(tái)窗口標(biāo)題欄的字符串,大小必須小于64K。返回值:如果函數(shù)調(diào)用成功,返回值為非零。如果函數(shù)調(diào)用失敗,返回值為零。備注:程序結(jié)束時(shí),系統(tǒng)恢復(fù)原控制臺(tái)標(biāo)題。(18) 設(shè)置控制臺(tái)窗口位置和大小SetConsoleWindowInfo功能:設(shè)置控制臺(tái)屏幕緩沖區(qū)窗口當(dāng)前的大小和位置。函數(shù)原型:BOOL WINAPI SetConsoleWindowInfo( HANDLE hConsoleOutput, BOOL bAbsolute, const SMALL_RECT *lpConsoleWindow);參數(shù)說(shuō)明:hConsoleOutput輸入控制臺(tái)屏幕緩沖區(qū)句柄。該句柄必須擁有GENERIC_READ訪問(wèn)權(quán)限。bAbsolute輸入如果此參數(shù)值為TRUE,則第三個(gè)參數(shù)指定的是窗口左上角和右下角在控制臺(tái)屏幕緩沖區(qū)中的絕對(duì)坐標(biāo);如果此參數(shù)值為FALSE,則第三個(gè)參數(shù)指定的是窗口左上角和右下角以它們當(dāng)前位置為參考的相對(duì)坐標(biāo)。lpConsoleWindow輸入矩形結(jié)構(gòu)指針,所指向的矩形結(jié)構(gòu)類型數(shù)據(jù)用于指定窗口左上角和右下角的新位置。返回值:如果函數(shù)調(diào)用成功,則返回非零值。如果函數(shù)調(diào)用失敗,返回零。備注:如果指定的窗口矩形區(qū)域超出了控制臺(tái)屏幕緩沖區(qū)的邊界,則函數(shù)調(diào)用失敗。即窗口矩形區(qū)域的Top和Left不得小于0,而B(niǎo)ottom和Right不得大于(屏幕緩沖區(qū)高度-1)和(屏幕緩沖區(qū)寬度-1)。如果Right=left或Bottom=Top,函數(shù)也將調(diào)用失敗。在控制臺(tái)擁有多個(gè)屏幕緩沖區(qū)時(shí),改變其中一個(gè)屏幕緩沖區(qū)中的窗口位置不會(huì)影響到窗口在其他屏幕緩沖區(qū)中的位置。獲取屏幕緩沖區(qū)窗口當(dāng)前的大小和位置,使用函數(shù)GetConsoleScreenBufferInfo。(19) 寫控制臺(tái)WriteConsole功能:從當(dāng)前光標(biāo)位置開(kāi)始向控制臺(tái)屏幕緩沖區(qū)輸出字符串。函數(shù)原型:BOOL WINAPI WriteConsole( HANDLE hConsoleOutput, const VOID *lpBuffer, DWORD nNumberOfCharsToWrite, LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved);參數(shù)說(shuō)明:hConsoleOutput輸入控制臺(tái)屏幕緩沖區(qū)句柄。該句柄必須擁有GENERIC_WRITE訪問(wèn)權(quán)限。lpBuffer輸入指向緩沖區(qū)的指針,緩沖區(qū)中包含了將被輸出到控制臺(tái)屏幕緩沖區(qū)的字符。大小必須小于64K。nNumberOfCharsToWrite輸入將被輸出的字符數(shù)。如果大小超過(guò)64KB,函數(shù)將因ERROR_NOT_ENOUGH_MEMORY而調(diào)用失敗。lpNumberOfCharsWritten輸出指向變量的指針,變量用來(lái)存放實(shí)際輸出的字符數(shù)。lpReserved保留;必須為NULL。返回值:如果函數(shù)調(diào)用成功,返回值為非0。如果函數(shù)調(diào)用失敗,返回值為0。備注:函數(shù)WriteConsole在當(dāng)前光標(biāo)位置向控制臺(tái)屏幕緩沖區(qū)輸出字符。光標(biāo)位置隨字符輸出而移動(dòng)。函數(shù)SetConsoleCursorPosition可設(shè)置當(dāng)前光標(biāo)位置。(20) 向指定區(qū)域?qū)憥傩缘淖址鸚riteConsoleOutput功能:在控制臺(tái)屏幕緩沖區(qū)指定的矩形字符單元塊上輸出帶顏色屬性的字符信息。輸出數(shù)據(jù)來(lái)自于源緩沖區(qū)指定位置上相應(yīng)大小的矩形字符單元塊。函數(shù)原型:BOOL WINAPI WriteConsoleOutput( HANDLE hConsoleOutput, const CHAR_INFO *lpBuffer, COORD dwBufferSize, COORD dwBufferCoord, PSMALL_RECT lpWriteRegion);參數(shù)說(shuō)明:hConsoleOutput輸入控制臺(tái)屏幕緩沖區(qū)句柄。該句柄必須擁有GENERIC_WRITE訪問(wèn)權(quán)限。lpBuffer輸入用于存放將被輸出到控制臺(tái)屏幕緩沖區(qū)的數(shù)據(jù)。該指針?biāo)赶虻膬?nèi)存緩沖區(qū)可看作一個(gè)二維CHAR_INFO類型結(jié)構(gòu)數(shù)組,數(shù)組的大小由參數(shù)dwBufferSize指定。數(shù)組整體字節(jié)數(shù)必須小于64K。dwBufferSize輸入?yún)?shù)lpBuffer所指向的數(shù)據(jù)緩沖區(qū)大小,以字符單元為單位。該COORD類型數(shù)據(jù)的X成員表示列數(shù),Y成員表示行數(shù)。dwBufferCoord輸入所要輸出的數(shù)據(jù)在由參數(shù)lpBuffer所指向數(shù)據(jù)緩沖區(qū)中的位置。一般初值為0,0,表示從數(shù)據(jù)緩沖區(qū)的第一個(gè)單元開(kāi)始輸出。lpWriteRegion輸入, 輸出SMALL_RECT類型的指針。作為輸入?yún)?shù),所指結(jié)構(gòu)成員指定數(shù)據(jù)輸出的控制臺(tái)屏幕緩沖區(qū)矩
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 香港科技大學(xué)(廣州)《耳鼻咽喉頭頸外科》2023-2024學(xué)年第一學(xué)期期末試卷
- 佳木斯職業(yè)學(xué)院《文獻(xiàn)學(xué)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 燕京理工學(xué)院《web技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年陜西省恒口高級(jí)中學(xué)高三下學(xué)期綜合模擬考試物理試題含解析
- 永城職業(yè)學(xué)院《安全工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江省杭州十四中2025年高三測(cè)試(四)物理試題含解析
- 江西服裝學(xué)院《先進(jìn)功能材料雙語(yǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧波幼兒師范高等??茖W(xué)?!稜I(yíng)養(yǎng)與食品衛(wèi)生學(xué)2》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆體育職業(yè)技術(shù)學(xué)院《影視攝影與剪輯技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 供應(yīng)商設(shè)備預(yù)驗(yàn)收人員分工
- 化學(xué)品(氬氣+二氧化碳混合氣)安全技術(shù)使用說(shuō)明書(shū)
- 產(chǎn)品質(zhì)量檢驗(yàn)報(bào)告樣本(范本模板)
- 煤層氣開(kāi)發(fā)-第2章-煤層氣地質(zhì)
- 武術(shù)公益推廣方案
- 黑龍江商業(yè)職業(yè)學(xué)院?jiǎn)握小堵殬I(yè)技能測(cè)試》參考試題庫(kù)(含答案)
- 小學(xué)數(shù)學(xué)六年級(jí)下冊(cè)《鴿巢問(wèn)題》作業(yè)設(shè)計(jì)
- 2024年安徽水利水電職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試題庫(kù)含答案解析
- 人教版五年級(jí)數(shù)學(xué)下冊(cè)第六單元分層作業(yè)設(shè)計(jì)
- 電路分析課程思政報(bào)告
- 千分尺課件(公開(kāi)課用)
評(píng)論
0/150
提交評(píng)論