国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

allegro_鼠標(biāo)例程

2019-11-17 05:44:40
字體:
供稿:網(wǎng)友

  install_mouse
remove_mouse
mouse_x
mouse_y
mouse_b
mouse_pos
show_mouse
scare_mouse
unscare_mouse
freeze_mouse_flag
position_mouse
set_mouse_range
set_mouse_speed
set_mouse_sPRite
set_mouse_sprite_focus
get_mouse_mickeys
mouse_callback




Allegro 鼠標(biāo)處理程序工作在 DOS int33 鼠標(biāo)驅(qū)動程序之上,所以只有在 DOS 驅(qū)動程序 (通常是 mouse.com 或 mouse.exe) 激活后才能工作. 它是一個有用的 int33 函數(shù)的簡單外殼, 因為它可以在 SVGA 模式顯示鼠標(biāo),而其它的基本驅(qū)動程序卻不行.
int install_mouse();
加載 Allegro 鼠標(biāo)處理程序.你必須在使用任何 其它鼠標(biāo)函數(shù)前調(diào)用它. 出錯則返回 -1 (比如, 假如 int33 驅(qū)動程序沒有 載入), 否則返回鼠標(biāo)的按鍵個數(shù).
void remove_mouse();
卸載鼠標(biāo)處理程序. 你不必明顯的調(diào)用它, 因為 allegro_exit() 將為你做這些.
extern volatile int mouse_x;
extern volatile int mouse_y;
extern volatile int mouse_b;
extern volatile int mouse_pos;
包含有當(dāng)前鼠標(biāo)位置和狀態(tài)的全局變量. mouse_x 和 mouse_y 是表明鼠標(biāo)位置的整數(shù), 范圍從零到 屏幕右下角. mouse_b 是一個指明每個鍵狀態(tài)的位域變量: 位 0 是左鍵, 位 1 是右鍵, 位 2 是中鍵. 比如:
      if (mouse_b & 1)
         printf("左鍵被按下/n");
      if (!(mouse_b & 2))

         printf("右鍵沒有被按下/n");

mouse_pos 變量高位存放著當(dāng)前 X 軸值,低位存放 Y 軸值. 這個可能用在頻繁檢測循環(huán)中, 這時鼠標(biāo)中斷可能發(fā)生在你讀兩個坐標(biāo)的過程之間, 所以你可以只用一條指令讀出坐標(biāo)然后自己隨意的將變量分開.

void show_mouse(B99vMAP *bmp);
告訴 Allegro 在屏幕上顯示鼠標(biāo).這只在 時鐘模塊加載了才工作.鼠標(biāo)將被畫在指定的位圖(bitmap)上, 這個位圖通常是 'screen' (屏幕) (見后面有關(guān)位圖的信息). 調(diào)用 show_mouse(NULL) 可以隱藏鼠標(biāo). 警告: 假如你在鼠標(biāo)可見時向屏幕畫任何東西, 鼠標(biāo)移動中斷可能發(fā)生在你繪畫的過程中. 假如這發(fā)生在鼠標(biāo)緩沖刷新和 SVGA 頁面切換時 將造成混亂,是滿屏留下 '鼠標(biāo)拖動軌跡 (mouse droppings)' 為了避免這些,你必須在向屏幕作畫時確認(rèn)關(guān)掉的鼠標(biāo)顯示.

void scare_mouse();
幫助你在作畫操作前隱藏鼠標(biāo). 它將臨時去掉鼠標(biāo), 但僅僅在真正需要時 (即: 鼠標(biāo)可見, 并顯示在物理 屏幕而不是其它內(nèi)存表面, 并且不是硬件光標(biāo)). 先前的鼠標(biāo)狀態(tài)被儲存用在后來的 unscare_mouse() 調(diào)用.
void unscare_mouse();
取消前面 scare_mouse() 調(diào)用引起的變化, 恢復(fù) 起初的鼠標(biāo)狀態(tài).
extern int freeze_mouse_flag;
假如這個標(biāo)志被設(shè)置,鼠標(biāo)在移動后不會被移動. 這避免了你每次作畫時隱藏鼠標(biāo), 但是你要保證你作畫的位置不要和當(dāng)前鼠標(biāo)的位置重疊.

void position_mouse(int x, int y);
將鼠標(biāo)移動到屏幕的指定位置.即使鼠標(biāo)現(xiàn)在正被顯示,這個移動也是安全的.

void set_mouse_range(int x1, int y1, int x2, int y2);
設(shè)置鼠標(biāo)能在屏幕上移動的區(qū)域. 傳入左上角和右下角 坐標(biāo)(坐標(biāo)點包括在內(nèi)). 假如你沒有調(diào)用過 這個函數(shù),范圍則是 (0,0, SCREEN_W-1, SCREEN_H-1).
void set_mouse_speed(int xspeed, int yspeed);
設(shè)置鼠標(biāo)速度. xspeed 和 yspeed 的值越大,鼠標(biāo)的速度越慢: 缺省值為 2.
void set_mouse_sprite(B99vMAP *sprite);
你不喜歡我的鼠標(biāo)圖案? 沒問題.使用這個函數(shù)可以支持 你自己做的圖案. 假如你改變了圖案然而又想再次用我
做的可愛的箭頭,調(diào)用 set_mouse_sprite(NULL).
void set_mouse_sprite_focus(int x, int y);
鼠標(biāo)焦點(focus)是鼠標(biāo)上起效果的那一點, 就是對應(yīng) (mouse_x,mouse_y) 的那一點.缺省值是 箭頭的左上角,但是當(dāng)你使用其它不同的鼠標(biāo)圖案時 可能需要改變它.
void get_mouse_mickeys(int *mickeyx, int *mickeyy);
測量鼠標(biāo)從上次調(diào)用這個函數(shù)以后移動了多遠(yuǎn). 即使鼠標(biāo)到達(dá)了屏幕的邊緣,函數(shù)依然回繼續(xù)統(tǒng)計移動的距離, 所以這個值對需要鼠標(biāo)擁有無限移動范圍的游戲很有用.

extern void (*mouse_callback)(int flags);
無論是鼠標(biāo)的移動或按鍵狀態(tài)的改變,中斷處理程序都會來調(diào)用它. 這個函數(shù)必須在被鎖住的內(nèi)存里,并且必須被狠快的執(zhí)行! 它被傳入事件標(biāo)志然后被啟動, 這個標(biāo)志參數(shù)的位屏蔽標(biāo)志有 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.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 厦门市| 肥城市| 安宁市| 武功县| 中卫市| 婺源县| 长子县| 陆川县| 会昌县| 油尖旺区| 顺昌县| 寻乌县| 苍山县| 梁山县| 江华| 嘉义县| 册亨县| 北海市| 镇平县| 会昌县| 海晏县| 华容县| 长阳| 绥棱县| 自治县| 麻江县| 黑水县| 屯留县| 黄浦区| 新泰市| 崇礼县| 横峰县| 崇仁县| 铁岭县| 旅游| 什邡市| 门源| 繁昌县| 金沙县| 昂仁县| 彰化县|