游标式屏幕菜单c语言,【C语言】控制台窗口图形界面编程(六):光标设置
00. 目錄
01. CONSOLE_CURSOR_INFO結(jié)構(gòu)
包含有關(guān)控制臺光標(biāo)的信息。
typedef struct _CONSOLE_CURSOR_INFO {
DWORD dwSize;
BOOL bVisible;
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
dwSize
光標(biāo)填充的字符單元格的百分比。該值介于1和100之間。光標(biāo)外觀會發(fā)生變化,從完全填充單元格到顯示為單元格底部的水平線。
注意 雖然dwSize值通常介于1和100之間,但在某些情況下,可能會返回該范圍之外的值。例如,如果在注冊表中將CursorSize設(shè)置為0,則返回的dwSize值將為0。
bVisible
光標(biāo)的可見性。如果光標(biāo)可見,則此成員為TRUE。
02. GetConsoleCursorInfo函數(shù)
獲取有關(guān)指定控制臺屏幕緩沖區(qū)的光標(biāo)大小和可見性的信息。
類型聲明
BOOL WINAPI GetConsoleCursorInfo(
_In_ HANDLE hConsoleOutput,
_Out_ PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
);
功能:
獲取光標(biāo)相關(guān)信息
參數(shù):
hConsoleOutput 控制臺屏幕緩沖區(qū)的句柄。句柄必須具有GENERIC_READ訪問權(quán)限。
lpConsoleCursorInfo 指向CONSOLE_CURSOR_INFO結(jié)構(gòu)的指針,該結(jié)構(gòu)接收有關(guān)控制臺游標(biāo)的信息。
返回值:
如果函數(shù)成功,則返回值為非零值。
如果函數(shù)失敗,則返回值為零。要獲取擴(kuò)展錯誤信息,請調(diào)用GetLastError。
參考程序
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
int main(void)
{
//定義句柄變量
HANDLE hOut = NULL;
//光標(biāo)信息變量
CONSOLE_CURSOR_INFO cursorInfo;
//獲取標(biāo)準(zhǔn)輸出句柄
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
//獲取當(dāng)前光標(biāo)信息
GetConsoleCursorInfo(hOut, &cursorInfo);
printf("光標(biāo)默認(rèn)大小: %d 光標(biāo)是否可見: %d\n", cursorInfo.dwSize, cursorInfo.bVisible);
//關(guān)閉句柄
CloseHandle(hOut);
system("pause");
return 0;
}
執(zhí)行結(jié)果
03. SetConsoleCursorInfo函數(shù)
設(shè)置指定控制臺屏幕緩沖區(qū)的光標(biāo)大小和可見性。
函數(shù)聲明:
BOOL WINAPI SetConsoleCursorInfo(
_In_ HANDLE hConsoleOutput,
_In_ const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo
);
功能:
設(shè)置光標(biāo)的屬性
參數(shù):
hConsoleOutput 控制臺屏幕緩沖區(qū)的句柄。句柄必須具有GENERIC_READ訪問權(quán)限。
lpConsoleCursorInfo 指向CONSOLE_CURSOR_INFO結(jié)構(gòu)的指針,該結(jié)構(gòu)為控制臺屏幕緩沖區(qū)的游標(biāo)提供新規(guī)范。
返回值:
如果函數(shù)成功,則返回值為非零值。
如果函數(shù)失敗,則返回值為零。要獲取擴(kuò)展錯誤信息,請調(diào)用GetLastError。
參考程序
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
int main(void)
{
//定義句柄變量
HANDLE hOut = NULL;
//光標(biāo)信息變量
CONSOLE_CURSOR_INFO cursorInfo;
//獲取標(biāo)準(zhǔn)輸出句柄
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
//獲取當(dāng)前光標(biāo)信息
GetConsoleCursorInfo(hOut, &cursorInfo);
printf("光標(biāo)默認(rèn)大小: %d 光標(biāo)是否可見: %d\n", cursorInfo.dwSize, cursorInfo.bVisible);
getchar();
//設(shè)置光標(biāo)的尺寸為20
cursorInfo.dwSize = 5;
SetConsoleCursorInfo(hOut, &cursorInfo);
getchar();
//設(shè)置光標(biāo)的尺寸為50
cursorInfo.dwSize = 50;
SetConsoleCursorInfo(hOut, &cursorInfo);
getchar();
//設(shè)置光標(biāo)的尺寸為100
cursorInfo.dwSize = 100;
SetConsoleCursorInfo(hOut, &cursorInfo);
getchar();
//設(shè)置光標(biāo)不可見
cursorInfo.dwSize = 25;
cursorInfo.bVisible = 0;
SetConsoleCursorInfo(hOut, &cursorInfo);
getchar();
//關(guān)閉句柄
CloseHandle(hOut);
system("pause");
return 0;
}
執(zhí)行結(jié)果
04. SetConsoleCursorPosition函數(shù)
設(shè)置指定控制臺屏幕緩沖區(qū)中的光標(biāo)位置。
函數(shù)聲明:
BOOL WINAPI SetConsoleCursorPosition(
_In_ HANDLE hConsoleOutput,
_In_ COORD dwCursorPosition
);
功能:
設(shè)置光標(biāo)的位置
參數(shù):
hConsoleOutput 控制臺屏幕緩沖區(qū)的句柄。句柄必須具有GENERIC_READ訪問權(quán)限。
dwCursorPosition 用于指定新的光標(biāo)位置(以字符為單位)。坐標(biāo)是屏幕緩沖區(qū)字符單元格的列和行。坐標(biāo)必須位于控制臺屏幕緩沖區(qū)的邊界內(nèi)。
返回值:
如果函數(shù)成功,則返回值為非零值。
如果函數(shù)失敗,則返回值為零。要獲取擴(kuò)展錯誤信息,請調(diào)用GetLastError。
參考程序;
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
int main(void)
{
//定義句柄變量
HANDLE hOut = NULL;
COORD pos;
//獲取標(biāo)準(zhǔn)輸出句柄
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
pos.X = 8;
pos.Y = 8;
//設(shè)置光標(biāo)的位置
SetConsoleCursorPosition(hOut, pos);
printf("hello itcast1");
pos.X = 18;
pos.Y = 16;
//設(shè)置光標(biāo)的位置
SetConsoleCursorPosition(hOut, pos);
printf("hello itcast2");
//關(guān)閉句柄
CloseHandle(hOut);
system("pause");
return 0;
}
測試結(jié)果:
原文:https://www.cnblogs.com/szitcast/p/10923499.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的游标式屏幕菜单c语言,【C语言】控制台窗口图形界面编程(六):光标设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 密码登录错误怎么退出c语言,使用C语言判
- 下一篇: c语言调用tuxedo步骤,tuxedo