c c 控制台游標的相關操作

2021-06-05 21:57:58 字數 1623 閱讀 8441

——————— 【 謝謝合作 】 ———————

命令列的游標(consolecursor)其實就是乙個另類的插入符(caret)。插入符是什麼呢?當你在記事本打字的時候,那個一閃一閃的豎線就叫做插入符。插入符的作用有多大呢?沒有了插入符,假如你正在輸入第二十個字,突然發現第乙個字打錯了,那麼你得把正確的十九個字和錯誤的第乙個字全刪了,再把所有東西重新打一遍。然而,系統沒有給任何命令是可以操作命令行游標的,游標的存在實在是名存實亡,完全不能發揮游標的真正用途。本教程的目的,就是讓大家學會在命令列程式中控制游標。

一、console_cursor_info 結構體

console_cursor_info 結構體中包含了關於命令列游標的一些資訊,是否顯示和游標大小兩個資訊。通過更改這個結構體,再賦給命令列,就可以實現想要的一些效果了。

基本思路:

首先先讀取命令列現在的 console_cursor_info 結構體資訊,需要用到api函式getconsolecursorinfo。getconsolecursorinfo 需要用到輸出控制代碼,可以通過api函式getstdhandle獲得。

然後改變結構體資訊,再使用api函式setconsolecursorinfo

例:隱藏游標:

handle hout = getstdhandle(std_output_handle);

console_cursor_info cci;

getconsolecursorinfo(hout,&cci);

cci.bvisible=false;

setconsolecursorinfo(hout,&cci);

二、控制台游標的位置

現在能夠控制游標的樣式了,但對於批處理來說還遠遠不夠。大部分強大的第三方工具都有設定和獲得游標位置的功能,這節我們就來討論如何實現。

設定游標位置需要用到api函式setconsolecursorposition,需要的引數還是輸出控制代碼,和欲設定的座標。座標用coord結構體就可以了。

例:將游標移動到(5,3):

handle hout = getstdhandle(std_output_handle);

coord pos;

pos.x=5;

pos.y=3;

setconsolecursorposition(hout,pos);

獲取游標的位置,沒有專用的api函式。我們需要通過另乙個api函式getconsolescreenbufferinfo來獲取。其中,getconsolescreenbufferinfo的引數分別為輸出控制代碼以及console_screen_buffer_info結構體的指標。console_screen_buffer_info結構體中包含了許多控制台緩衝區的屬性,其中我們需要的是乙個名為dwcursorposition的coord結構體,包含了游標的位置。

例:handle hout = getstdhandle(std_output_handle);

console_screen_buffer_info binfo;

getconsolescreenbufferinfo(hout, &binfo);

上面的例子,binfo.dwcursorposition就是當前的座標

——————— 【 謝謝合作 】 ———————

C 控制台游標與滑鼠的操作

對於游標的操作 void hidecursor int n 隱藏游標 setconsolecursorinfo getstdhandle std output handle cursor info n default 0 void gotoxy int x,int y 將游標移到 x,y 有關滑鼠的...

windows控制台游標控制

分步閱讀 控制台的游標具有兩個屬性 dwsize 高度,bvisible 是否顯示。具體步驟 1.得標準輸出裝置控制代碼getstdhandle 因為游標是在標準輸出裝置上顯示 2.獲取控制台游標資訊getconsolecursorinfo 可以跳過 3.設定控制台游標資訊setconsolecur...

VC控制台定位游標

gotoxy 是 tc 下用來實現游標定位的函式,經常有人問起 vc 下怎麼實現游標定位。很可惜,vc 下面沒有同名函式,不過有實現同樣功能的 api 可呼叫,只是稍微麻煩一些。封裝成 tc 同樣的介面可以這麼做 include include void gotoxy int x,int y set...