?? allegromouse .txt
字號:
鼠標例程
Allegro 鼠標處理程序工作在 DOS int33 鼠標驅動程序之上,所以只有在 DOS 驅動程序 (通常是 mouse.com 或 mouse.exe) 激活后才能工作.它是一個有用的 int33 函數的簡單外殼,因為它可以在 SVGA 模式顯示鼠標,而其它的基本驅動程序卻不行.
int install_mouse();
加載 Allegro 鼠標處理程序.你必須在使用任何其它鼠標函數前調用它. 出錯則返回 -1 (比如, 如果 int33 驅動程序沒有載入), 否則返回鼠標的按鍵個數.
void remove_mouse();
卸載鼠標處理程序. 你不必明顯的調用它,因為 allegro_exit() 將為你做這些.
extern volatile int mouse_x;
extern volatile int mouse_y;
extern volatile int mouse_b;
extern volatile int mouse_pos;
包含有當前鼠標位置和狀態的全局變量. mouse_x 和 mouse_y 是表明鼠標位置 的整數, 范圍從零到屏幕右下角. mouse_b 是一個指明每個鍵狀態的位域變量: 位 0 是左鍵, 位 1 是右鍵, 位 2 是中鍵. 比如:
if (mouse_b & 1)
printf("左鍵被按下\n");
if (!(mouse_b & 2))
printf("右鍵沒有被按下\n");
mouse_pos 變量高位存放著當前 X 軸值,低位存放 Y 軸值. 這個可能用在頻繁 檢測循環中,這時鼠標中斷可能發生在你讀兩個坐標的過程之間,所以你可以只用 一條指令讀出坐標然后自己隨意的將變量分開.
void show_mouse(BITMAP *bmp);
告訴 Allegro 在屏幕上顯示鼠標.這只在時鐘模塊加載了才工作.鼠標將被畫在 指定的位圖(bitmap)上, 這個位圖通常是 'screen' (屏幕) (見后面有關位圖的 信息). 調用 show_mouse(NULL) 可以隱藏鼠標. 警告: 如果你在鼠標可見時向 屏幕畫任何東西, 鼠標移動中斷可能發生在你繪畫的過程中. 如果這發生在鼠標 緩沖刷新和 SVGA 頁面切換時將造成混亂,是滿屏留下 '鼠標拖動軌跡 (mouse droppings)'為了避免這些,你必須在向屏幕作畫時確認關掉的鼠標顯示.
void scare_mouse();
幫助你在作畫操作前隱藏鼠標.它將臨時去掉鼠標, 但僅僅在真正需要時(即: 鼠 標可見, 并顯示在物理屏幕而不是其它內存表面, 并且不是硬件光標). 先前的鼠 標狀態被儲存用在后來的 unscare_mouse() 調用.
void unscare_mouse();
取消前面 scare_mouse() 調用引起的變化, 恢復起初的鼠標狀態.
extern int freeze_mouse_flag;
如果這個標志被設置,鼠標在移動后不會被移動.這避免了你每次作畫時隱藏鼠標, 但是你要保證你作畫的位置不要和當前鼠標的位置重疊.
void position_mouse(int x, int y);
將鼠標移動到屏幕的指定位置.即使鼠標現在正被顯示,這個移動也是安全的.
void set_mouse_range(int x1, int y1, int x2, int y2);
設置鼠標能在屏幕上移動的區域. 傳入左上角和右下角坐標(坐標點包括在內). 如果你沒有調用過這個函數,范圍則是 (0,0, SCREEN_W-1, SCREEN_H-1).
void set_mouse_speed(int xspeed, int yspeed);
設置鼠標速度. xspeed 和 yspeed 的值越大,鼠標的速度越慢:缺省值為 2.
void set_mouse_sprite(BITMAP *sprite);
你不喜歡我的鼠標圖案? 沒問題.使用這個函數可以支持你自己做的圖案. 如果 你改變了圖案然而又想再次用我做的可愛的箭頭,調用 set_mouse_sprite(NULL).
void set_mouse_sprite_focus(int x, int y);
鼠標焦點(focus)是鼠標上起效果的那一點, 就是對應 (mouse_x,mouse_y) 的那 一點.缺省值是箭頭的左上角,但是當你使用其它不同的鼠標圖案時可能需要改變它.
void get_mouse_mickeys(int *mickeyx, int *mickeyy);
測量鼠標從上次調用這個函數以后移動了多遠.即使鼠標到達了屏幕的邊緣,函數依 然回繼續統計移動的距離,所以這個值對需要鼠標擁有無限移動范圍的游戲很有用.
extern void (*mouse_callback)(int flags);
無論是鼠標的移動或按鍵狀態的改變,中斷處理程序都會來調用它.這個函數必須在 被鎖住的內存里,并且必須被狠快的執行! 它被傳入事件標志然后被啟動, 這個標志參數的位屏蔽標志有 MOUSE_FLAG_MOVE, MOUSE_FLAG_LEFT_DOWN, MOUSE_FLAG_LEFT_UP, MOUSE_FLAG_RIGHT_DOWN, MOUSE_FLAG_RIGHT_UP, MOUSE_FLAG_MIDDLE_DOWN, 和 MOUSE_FLAG_MIDDLE_UP.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -