——————— 【 謝謝合作 】 ———————
命令列的游標(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...