getch() 函式,用於返回使用者輸入的字元。當連續按鍵時,該函式返回第乙個字元和第二個字元之間,預設有 0.5 秒的延時,並且之後的連續字元,預設是每秒鐘 15 次輸入。這兩個數值可以在控制面板中設定。
如果需要平滑的按鍵輸入,或者同時按下多個按鍵,就不能用 getch() 了,需要使用另乙個 windows api 函式:getasynckeystate()。該函式原型如下:
short getasynckeystate
(int vkey // virtual-key code
);
vkey 是要檢測的按鍵的虛擬鍵碼,常用的如 vk_up、vk_down 等,分別表示方向鍵的上、下等。需要注意:對於 26 個字母的鍵碼,可以直接寫 『a』、『b』……,而不要寫 vk_a、vk_b。數字鍵也是,請直接寫 『0』、『1』……。全部的 256 種虛擬鍵碼,請參考 msdn 中的 virtual-key codes。
返回的 short 值,如果最高位為 1,表示該鍵被按下;否則表示該鍵彈起。該函式的最低位還可以用來檢測開關鍵(比如大小寫鎖定鍵)的狀態。作為按鍵處理,還可以使用 getkeystate、getkeyboardstate 等函式,詳細請參考 msdn 手冊中的 keyboard input functions 部分。
下面給乙個簡單的例子,該範例是用鍵盤的上下左右鍵移動乙個圓,並且可以通過左 shift 放大、左 ctrl 縮小,幾個按鍵可以同時靈活地控制圓。**如下:
// 程式名稱:同時檢測多個按鍵及平滑按鍵輸入的範例
// 編譯環境:visual c++ 6.0 / 2010,easyx 驚蟄版
//#include
/// 定義常量、列舉量、結構體、全域性變數
/#define cmd_up 1
#define cmd_down 2
#define cmd_left 4
#define cmd_right 8
#define cmd_zoomin 16
#define cmd_zoomout 32
#define cmd_quit 64
// 宣告圓的座標和半徑
int g_x, g_y, g_r;
/// 函式宣告
/void
init()
;// 初始化
void
quit()
;// 退出
intgetcommand()
;// 獲取控制命令
void
dispatchcommand
(int _cmd)
;// 分發控制命令
void
onup()
;// 上移
void
ondown()
;// 下移
void
onleft()
;// 左移
void
onright()
;// 右移
void
onzoomin()
;// 放大
void
onzoomout()
;// 縮小
/// 函式定義
/// 主函式
void
main()
while(!
(c & cmd_quit));
quit()
;}// 初始化
void
init()
// 退出
void
quit()
// 獲取控制命令
intgetcommand()
// 分發控制命令
void
dispatchcommand
(int _cmd)
// 上移
void
onup()
// 下移
void
ondown()
// 左移
void
onleft()
// 右移
void
onright()
// 放大
void
onzoomin()
// 縮小
void
onzoomout()
再額外說乙個小問題:由於 getasynckeystate() 函式獲取的按鍵狀態是直接取自硬體,並非取自訊息佇列。所以,即便程式處非活動狀態,getasynckeystate() 仍然可以正確獲取按鍵狀態。所以會有這樣乙個問題:比如你寫了乙個打字練習的小遊戲,在遊戲中途切換到另乙個應用去發郵件,你會看到發郵件錄入文字時,你的打字練習小遊戲仍然會接受鍵盤輸入。很明顯,這時候需要判當前應用是否處於活動狀態。解決方法有多種,例如,通過 windows api 函式 getforegroundwindow() 獲取到當前前景視窗的控制代碼,再和 easyx 視窗的控制代碼對比,如果相同,就表示 easyx 的視窗處於活動狀態,從而解決非活動狀態的按鍵處理問題。 同時啟動多個Tomcat
一台pc機上同時啟動多個tomcat 環境 兩個tomcat7.0.20,使用乙個jvm,jdk7,win7 64位系統。系統環境變數裡的catalina home已經刪除,根據catalina.bat裡的 來看,應該走的是自己設定的臨時環境變數。兩個startup.bat最前面加上一句set ca...
同時開啟多個軟體
有時候我們開啟幾個常用的軟體,還在乙個乙個開啟嗎?下面教你一招 1 建立乙個.bat檔案 2 輸入以下內容 open some software echo off start title d program files x86 tencent qq bin qqsclauncher.exe star...
同時啟動多個Tomcat
tomcat是個服務程式,需要占用幾個通訊埠,所以預設情況是不能啟動多個tomcat,如果要啟動多個tomcat,需要修改配置檔案,通過在配置檔案設定不同的通訊埠就可以做到.檔案 tomcat home conf server.xml 是tomcat服務配置檔案,裡面有很多配置項,本文只關注怎麼修改...