TC下滑鼠操作

2021-08-22 07:57:37 字數 2656 閱讀 3703

程式設計原理:

呼叫滑鼠功能中斷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 選單...