程式設計原理:
呼叫滑鼠功能中斷int 33h,所以需要包含 dos.h 標頭檔案。
自定義乙個函式mouse()用來呼叫中斷,中斷的入口引數和出口引數我們用暫存器變數inregs, outregs表示。
void mouse(int *m1, int *m2, int *m3, int *m4)
滑鼠功能中斷int 33h的使用說明:
00h — 初始化滑鼠 01h — 顯示滑鼠指標02h — 隱藏滑鼠指標 03h — 讀取滑鼠位置及按鈕狀態 04h — 設定滑鼠指
針位置 05h — 讀取滑鼠按鍵資訊 06h — 讀取滑鼠按鈕釋放息 07h — 設定滑鼠水平邊界 08h — 設定滑鼠垂直邊界
09h — 設定圖形滑鼠形狀 0ah 置本文滑鼠形狀 0bh — 讀取滑鼠移動計數
(1)、功能00h
功能描述: 初始化滑鼠,該操作只需要執行一次
入口引數: ax=00h
出口引數: ax=0000h——不支援滑鼠功能,ffffh——支援滑鼠功能
bx=滑鼠按鈕個數(在支援滑鼠功能時)
在支援滑鼠功能的情況下,滑鼠還被設定如下引數: 1、滑鼠指標放在螢幕**
2、如果當前滑鼠指標是顯示的,則操作後,滑鼠指標被隱藏
3、滑鼠指標的顯示頁為0
4、根據螢幕的顯示模式顯示滑鼠指標:文字—反向顯示矩形塊,圖形—尖頭形狀
5、水平象素比=8:8,垂直象素比=16:8
6、設定水平和垂直的顯示邊界為當前顯示模式的最大邊界
7、允許光筆**
8、雙速門檻值=64
(2)、功能01h
功能描述: 顯示滑鼠指標,通常在滑鼠初始化後,用此功能顯示其指標
入口引數: ax=01h
出口引數: 無
(3)、功能02h
功能描述: 隱藏滑鼠指標,一般在程式結束時,呼叫此功能
入口引數: ax=02h
出口引數: 無
(4)、功能03h
功能描述: 讀取滑鼠位置及其按鈕狀態
入口引數: ax=03h
出口引數: bx=按鍵狀態
位0=1——按下左鍵,位1=1——按下右鍵,位2=1——按下中鍵, 其它位——保留,內部使用
cx=水平位置
dx=垂直位置
(5)、功能04h
功能描述: 設定滑鼠指標位置
入口引數: ax=04h,cx=水平位置,dx=垂直位置
出口引數: 無
(6)、功能05h
功能描述: 讀取滑鼠按鍵資訊
入口引數: ax=05h,bx=指定的按鍵:0—左鍵,1—右鍵,2—中鍵
出口引數: ax=按鍵狀態,參見功能3h中bx的說明
bx=按鍵次數,cx=水平位置(最後按鍵時),dx=垂直位置(最後按鍵時)
(7)、功能06h
功能描述: 讀取滑鼠按鈕釋放資訊
入口引數: ax=06h,bx=指定的按鍵:0—左鍵,1—右鍵,2—中鍵
出口引數: ax=按鍵狀態,參見功能3h中bx的說明
bx=釋放的次數,cx=水平位置(最後釋放時),dx=垂直位置(最後釋放時)
(8)、功能07h
功能描述: 設定滑鼠水平邊界
入口引數: ax=07h,cx=最小水平位置,dx=最大水平位置
出口引數: 無,滑鼠有可能因新區域變小而自動移進新區域內
(9)、功能08h
功能描述: 設定滑鼠垂直邊界
入口引數: ax=08h,cx=最小垂直位置,dx=最大垂直位置
出口引數: 無,滑鼠有可能因新區域變小而自動移進新區域內
(10)、功能09h
功能描述: 設定圖形滑鼠形狀
入口引數: ax=09h,bx=指標的水平位置,cx=指標的垂直位置
esx=16×16位游標的映象位址引數說明: (bx,cx)是滑鼠的指標在16×16點陣中的位置,(0,0)是左上角;
esx指向的儲存單元內存放16×16點陣的位映象隱碼,緊跟其後的是16×16點陣的游標掩碼。
滑鼠指標的顯示方法: 位映象隱碼「邏輯與」上螢幕顯示區的內容,然後再用游標掩碼內容「異或」前面運算的結果。
出口引數: 無
我們可以在mouse()的基礎上編寫自己的滑鼠處理程式。這裡先定義一些巨集。
#define reset_mouse 0x00
#define show_mouse 0x01
#define left_button 0
#define right_button 1
#define either_button 2
#define check_button_pressed 0x05
int resetmouse(void)
void showmouse(void)
int testbutton(int testtype, int whichbutton)
if (whichbutton == right_button || whichbutton == either_button)
return 0;
}int left_pressed(void)
注意:(1) 在dos、win98下需確保已經裝載了mouse.sys,或已執行了mouse.com。
(2) 用tc2.0在win2k、winxp下不會顯示滑鼠,但滑鼠確實存在,你可以得到它的位置和事件。要想顯示,只有自己繪圖
了。
在tc環境下使用滑鼠
include include union regs reg void mousereset 滑鼠初始化 void mouseshow 顯示滑鼠 void mousehide 隱藏滑鼠 void checkmousepos 查詢 x,y 的位置和按鍵情況 unsigned int sign,s2 用...
Linux下的滑鼠操作
若干年前,我自認為很喜歡linux 若干年後,我發現我當初是何等的天真。恩,一分錢,一分貨!我堅信這一點!所以我現在堅持用ms的vista,正版的哦!1.關於 dev input mice 相信很多人都用過linux,也許你發現不管是在x window下面,還是在console下面,滑鼠都是可以操作...
TC下的程式除錯
程式除錯 debug 是程式設計中的一項基本技能,不會除錯程式,算不上會設計程式。下面就以tc 2.01 為例說明如何設定斷點 單步跟蹤 監視變數等除錯方法,該方法在tc 3.0中同樣適用。在tc的選單中,每個主選單項都有乙個紅色的打頭字母,表示該選單的快捷鍵是 alt 該字母 比如 file 選單...