C語(yǔ)言鼠標(biāo)操作方法及源碼_第1頁(yè)
C語(yǔ)言鼠標(biāo)操作方法及源碼_第2頁(yè)
C語(yǔ)言鼠標(biāo)操作方法及源碼_第3頁(yè)
C語(yǔ)言鼠標(biāo)操作方法及源碼_第4頁(yè)
C語(yǔ)言鼠標(biāo)操作方法及源碼_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C 語(yǔ)言鼠標(biāo)操作方法及源碼( 轉(zhuǎn)載 )鼠標(biāo)的操作是使用dos中斷功能,中斷號(hào):33h 下面給幾個(gè)操作鼠標(biāo)的示例,后面有更詳細(xì)的中斷功能說明及代碼。顯示鼠標(biāo):union REGS regs;regs.x.ax=1;int86(0 x33,®s,®s); 檢查是否被按下: union REGS regs;regs.x.ax=6;int86(0 x33,®s,®s);返回值在bx寄存器中;在實(shí)際編程中一般要使用循環(huán)不斷的檢驗(yàn)是否被按下!檢驗(yàn)鼠標(biāo)位置:u nion REGS regs;regs.x.ax=3;int86(0 x33,®s,®s);返回值:x坐標(biāo)在re

2、gs.h.cxy 坐標(biāo)在 regs.h.dx/*下面是各值對(duì)鼠標(biāo)的設(shè)置功能*/、功能 00H功能描述: 初始化鼠標(biāo),該操作只需要執(zhí)行一次入口參數(shù):AX=00H出口參數(shù):AX=0000H不支持鼠標(biāo)功能,F(xiàn)FFFH支持鼠標(biāo)功能BX=鼠標(biāo)按鈕個(gè)數(shù)(在支持鼠標(biāo)功能時(shí)) 在支持鼠標(biāo)功能的情況下,鼠標(biāo)還被設(shè)置如下參數(shù):、 鼠標(biāo)指針放在屏幕中央、 如果當(dāng)前鼠標(biāo)指針是顯示的,則操作后,鼠標(biāo)指針被隱藏、 鼠標(biāo)指針的顯示頁(yè)為 0 、 根據(jù)屏幕的顯示模式顯示鼠標(biāo)指針:文本 反向顯示矩形塊,圖形 尖頭形狀、水平象素比=8:8,垂直象素比= 16:8、 設(shè)置水平和垂直的顯示邊界為當(dāng)前顯示模式的最大邊界、 允許光筆仿真8

3、、 雙速門檻值=64、功能 01H功能描述:顯示鼠標(biāo)指針,通常在鼠標(biāo)初始化后,用此功能顯示其指針 入口參數(shù): AX=01H出口參數(shù): 無、功能 02H功能描述: 隱藏鼠標(biāo)指針,一般在程序結(jié)束時(shí),調(diào)用此功能入口參數(shù): AX= 02H出口參數(shù): 無、功能 03H功能描述: 讀取鼠標(biāo)位置及其按鈕狀態(tài)入口參數(shù):AX=03H出口參數(shù):BX =按鍵狀態(tài):位0=1 按下左鍵位 1=1 按下右鍵位 2=1 按下中鍵 其它位 保留,內(nèi)部使用CX =水平位置DX =垂直位置、功能 04H功能描述: 設(shè)置鼠標(biāo)指針位置入口參數(shù):AX=04H, CX=水平位置,DX =垂直位置出口參數(shù): 無、功能 05H功能描述: 讀

4、取鼠標(biāo)按鍵信息入口參數(shù):AX=05H, BX=指定的按鍵:0左鍵,1右鍵,2 中鍵出口參數(shù):人乂 =按鍵狀態(tài),參見功能3H中BX的說明BX=按鍵次數(shù)CX=水平位置(最后按鍵時(shí))。乂=垂直位置(最后按鍵時(shí))、功能 06H功能描述: 讀取鼠標(biāo)按鈕釋放信息入口參數(shù):AX=06H, BX=指定的按鍵:0左鍵,1右鍵,2 中鍵出口參數(shù):人乂 =按鍵狀態(tài),參見功能3H中BX的說明BX二釋放的次數(shù)CX=水平位置(最后釋放時(shí))。乂 =垂直位置(最后釋放時(shí))(8)、功能07H功能描述: 設(shè)置鼠標(biāo)水平邊界入口參數(shù):AX=07HCX=最小水平位置DX =最大水平位置出口參數(shù): 無,鼠標(biāo)有可能因新區(qū)域變小而自動(dòng)移進(jìn)新

5、區(qū)域內(nèi)、功能 08H功能描述: 設(shè)置鼠標(biāo)垂直邊界入口參數(shù):AX=08Hcx=最小垂直位置DX =最大垂直位置出口參數(shù): 無,鼠標(biāo)有可能因新區(qū)域變小而自動(dòng)移進(jìn)新區(qū)域內(nèi)、功能 09H功能描述: 設(shè)置圖形鼠標(biāo)形狀入口參數(shù):AX=09HBX=指針的水平位置。乂=指針的垂直位置ES:DX=16X16位光標(biāo)的映象地址 參數(shù)說明:(BX,CX)是鼠標(biāo)的指針在16X16點(diǎn)陣中的位置, (0,0)是左上角;ES:DX指向的存儲(chǔ)單元內(nèi)存放16X16點(diǎn)陣的位映象隱碼,緊跟其后的是16X16點(diǎn)陣的光 標(biāo)掩碼?!?” 鼠標(biāo)指針的顯示方法: 位映象隱碼 邏輯與 上屏幕顯示區(qū)的內(nèi)容,然后再用光標(biāo) 掩碼內(nèi)“ ” 容 異或 前

6、面運(yùn)算的結(jié)果。出口參數(shù): 無(11)、功能 0AH功能描述: 設(shè)置本文鼠標(biāo)形狀入口參數(shù):AX=OAHBX=光標(biāo)類型:0 CX和DX 的各位含義如下:位70 鼠標(biāo)指針符號(hào)位 108 字符前景色位 11 亮度位 1412 字符背景色位 15 閃爍1 CX=光標(biāo)的起始掃描線DX =光標(biāo)的結(jié)束掃描線出口參數(shù): 無(12)、功能 0BH功能描述: 讀取鼠標(biāo)移動(dòng)計(jì)數(shù)入口參數(shù):AX=0BH出口參數(shù):CX=水平移動(dòng)距離:正數(shù)向右移,負(fù)數(shù) 向左移DX=垂直移動(dòng)距離:正數(shù)向下移,負(fù)數(shù) 向上移、功能 0CH功能描述: 為鼠標(biāo)事件設(shè)置處理程序入口參數(shù):AX=0CHCX =中斷掩碼 位0=1 鼠標(biāo)指針位置發(fā)送變化位1

7、= 1 按下左按鈕位 2= 1 釋放左按鈕位 3=1 按下右按鈕位 4=1 釋放右按鈕位 5=1 按下中間按鈕位 6=1 釋放中間按鈕位 715= 0 保留ES:DX =中斷處理程序的地址在進(jìn)入中斷處理程序時(shí),有關(guān)寄存器的值含義:AX =中斷掩碼BX =按鍵狀態(tài)CX =鼠標(biāo)指針的水平位置DX =鼠標(biāo)指針的垂直位置SI =水平位置的變化量DI =垂直位置的變化量出口參數(shù): 無、功能 0DH功能描述: 允許光筆仿真入口參數(shù): AX= 0DH出口參數(shù): 無(15)、功能 0EH功能描述: 關(guān)閉光筆仿真入口參數(shù):AX=OEH出口參數(shù): 無(16)、功能 0FH功能描述: 設(shè)置鼠標(biāo)計(jì)數(shù)與象素比入口參數(shù):

8、AX=OFHCX =水平比例DX =垂直比例出口參數(shù):無(17)、功能 10H功能描述:設(shè)置鼠標(biāo)指針隱藏區(qū)域入口參數(shù):AX = 10HCX=左上角X坐標(biāo)DX =左上角Y坐標(biāo)SI=右下角X坐標(biāo)DI=右下角Y坐標(biāo)出口參數(shù):無、功能 13H功能描述: 設(shè)置倍速的閾值,其缺省值為 64 入口參數(shù):AX = 13HDX =閥值 出口參數(shù): 無、功能 14H功能描述: 替換鼠標(biāo)事件中斷入口參數(shù):AX = 14HCX =中斷掩碼ES:DX =中斷處理程序的地址 出口參數(shù):CX=舊的中斷掩碼ES:DX =舊的中斷處理程序地址、功能 15H功能描述: 讀取鼠標(biāo)驅(qū)動(dòng)器狀態(tài)的緩沖區(qū)大小 入口參數(shù):AX = 15H

9、出口參數(shù):BX=存放鼠標(biāo)驅(qū)動(dòng)器狀態(tài)所需緩沖區(qū)的大小、功能 16H功能描述: 存儲(chǔ)鼠標(biāo)驅(qū)動(dòng)器狀態(tài)入口參數(shù):AX = 16HES:DX =存儲(chǔ)鼠標(biāo)驅(qū)動(dòng)器狀態(tài)的地址 出口參數(shù):無(22)、功能17H 功能描述: 重裝鼠標(biāo)驅(qū)動(dòng)器狀態(tài)入口參數(shù):AX = 17HES:DX =鼠標(biāo)驅(qū)動(dòng)器狀態(tài)的地址 出口參數(shù): 無(23)、功能 18H功能描述: 為鼠標(biāo)事件設(shè)置可選的處理程序入口參數(shù):AX = 18HCX =替換中斷掩碼ES:DX=替換中斷處理程序的地址CF=O出口參數(shù): 無、功能 19H功能描述: 讀取替換處理程序的地址入口參數(shù):AX = 19HCX =替換中斷掩碼出口參數(shù):若AX = -1不成功,否則,E

10、S:DX =中斷處理程序的地址、功能 1AH功能描述: 設(shè)置鼠標(biāo)的靈敏度,其取值1100入口參數(shù):AX = 1AHBX=水平靈敏度(每8個(gè)象素鼠標(biāo)需要移動(dòng)的數(shù)量,一般為8)CX=垂直靈敏度(每8個(gè)象素鼠標(biāo)需要移動(dòng)的數(shù)量,一般為16) DX =倍速閥值出口參數(shù): 無、功能 1BH功能描述: 讀取鼠標(biāo)的靈敏度入口參數(shù):AX = 1BH出口參數(shù):BX =水平靈敏度cx=垂直靈敏度DX =倍速閥值、功能 1CH功能描述:設(shè)置鼠標(biāo)中斷速率入口參數(shù):AX = 1CHBX=每秒鐘中斷的次數(shù):0關(guān)中斷,130/S, 250/S, 3100/S, 4200/S 出口參數(shù): 無、功能 1DH功能描述: 為鼠標(biāo)指針

11、選擇顯示頁(yè)入口參數(shù):AX = 1DHBX =顯示頁(yè)出口參數(shù): 無、功能 1EH功能描述: 讀取鼠標(biāo)指針的顯示頁(yè)入口參數(shù):AX = 1EH出口參數(shù):BX =顯示頁(yè)、功能 1FH功能描述: 禁止鼠標(biāo)驅(qū)動(dòng)程序入口參數(shù):AX = 1FH出口參數(shù):若AX = -1不成功,否則,ES:BX =鼠標(biāo)驅(qū)動(dòng)程序的地址、功能 20H功能描述: 啟動(dòng)鼠標(biāo)驅(qū)動(dòng)程序入口參數(shù):AX=20H出口參數(shù): 無(32)、功能 21H功能描述: 鼠標(biāo)驅(qū)動(dòng)程序復(fù)位入口參數(shù):AX=21H出口參數(shù):若AX = -1不成功,否則,BX=2、功能 22H功能描述: 設(shè)置鼠標(biāo)驅(qū)動(dòng)程序信息語(yǔ)言入口參數(shù):AX=22HBX=語(yǔ)言代碼:0英語(yǔ),1法語(yǔ)

12、,2荷蘭語(yǔ),3德語(yǔ),4瑞典語(yǔ),5芬蘭語(yǔ),6西 班牙語(yǔ), 7葡萄牙語(yǔ), 8意大利語(yǔ)出口參數(shù): 無、功能 23H功能描述: 讀取語(yǔ)種入口參數(shù):AX=23H出口參數(shù):BX =語(yǔ)言代碼、功能 24H功能描述: 讀取鼠標(biāo)信息入口參數(shù):AX=24H出口參數(shù):BH =主版本號(hào),BL=輔版本號(hào)CL二中斷請(qǐng)求號(hào)CH=鼠標(biāo)類型:1Bus Mouse, 2Serial Mouse, 3InPort Mouse, 4PS/2Mouse, 5HP Mouse、功能 25H功能描述: 讀取鼠標(biāo)驅(qū)動(dòng)程序信息入口參數(shù):AX=25H出口參數(shù):AX=鼠標(biāo)驅(qū)動(dòng)程序信息:位15 0:驅(qū)動(dòng)程序是.SYS文件,否則,為.COM 文件位

13、140: 不完全鼠標(biāo)顯示驅(qū)動(dòng)程序,否則,為完全的位 13-1200: 軟件文本光標(biāo)01: 硬件文本光標(biāo)1X: 圖形光標(biāo)、功能 26H功能描述: 讀取最大有效坐標(biāo)入口參數(shù):AX=26H出口參數(shù):BX=鼠標(biāo)驅(qū)動(dòng)程序狀態(tài)CX=最大水平坐標(biāo)DX =最大垂直坐標(biāo)#include#include#include#include#include#include/*鼠標(biāo)信息宏定義*/#define WAITING 0 xff00#define LEFTPRESS 0 xff01#define LEFTCLICK 0 xff10#define LEFTDRAG 0 xff19#define RIGHTPRESS

14、 0 xff02#define RIGHTCLICK 0 xff20#define RIGHTDRAG 0 xff2a#define MIDDLEPRESS 0 xff04#define MIDDLECLICK 0 xff40#define MIDDLEDRAG 0 xff4c#define MOUSEMOVE 0 xff08int hide1616, bury1616,mousedraw1616,pixelsave1616;/*分別定義隱碼、掩碼、點(diǎn)值*/int mousebutton,mouseexist,mouseX,mouseY;void mousepicture() /*畫心形,可設(shè)

15、置其它的圖形*/int i,j,k;long hidenum16=0 xe3c7,0 xc183,0 x8001,0 x0000,0 x0000,0 x0000,0 x0000,0 x8001,0 x8001,0 xc003,0 xe007,0 xf00f,0 xf81f,0 xfc3f,0 xfe7f,0 xffff, ; /*隱碼點(diǎn)值,是對(duì)點(diǎn)素進(jìn)行設(shè)置*/long burynum16=0 x1c38,0 x3e7c,0 x7ffe,0 xffff,0 xffff,0 xffff,0 xffff,0 x7ffe,0 x3ffe,0 x3ffc,0 x1ff8,0 x0ff0,0 x07e0,

16、0 x03c0,0 x0180,0 x0000,;/*掩碼點(diǎn)值*/for(i=0;i=0;j-)hideij=hidenumi%2;hidenumi/=2; /*把隱碼轉(zhuǎn)化為 0-1*/while(burynumi!=0)for(k=15;k=0;k-)buryij=burynumi%2;burynumi/=2; for(k=0;k16;k+) if(hideik=0&buryik=0)mousedrawik=1;else if(hideik=0&buryik=1) mousedrawik=2;else if(hideik=1&buryik=0)mousedrawik=3;elsemoused

17、rawik=4; /*期間實(shí)行邏輯與和異或*/void mouseon(int x,int y) /*顯示鼠標(biāo)*/int i,j;for(i=0;i16;i+)for(j=0;j16;j+)pixelsaveij=getpixel(x+j,y+i);/*取得指定像素的顏色 */if(mousedrawij=1)putpixel(x+j,y+i,6);if(mousedrawij=2) /*1、2 采用點(diǎn)的邏輯運(yùn)算判斷進(jìn)行著色*/putpixel(x+j,y+i,6);void mouseoff() /* 消失鼠標(biāo) */int i,j,x,y,color;x=mouseX;y=mouseY;fo

18、r(i=0;i16;i+)for(j=0;j16;j+)if(mousedrawij=3)|(mousedrawij=4) /*3、 4 采用點(diǎn)的邏輯運(yùn)算 判斷可否繼續(xù)運(yùn)行*/continue;putpixel(x+j,y+i,BLACK); /*使其鼠標(biāo)移動(dòng)前的位置變?yōu)楹谏?/ putpixel(x+j,y+i,pixelsaveij);/* 使其恢復(fù)指定像素的顏色*/*鼠標(biāo)是否加載MouseExist:l=加載0=未加載MouseButton:鼠標(biāo)按鍵數(shù)目 */void mouseload()_AX=0 x00;geninterrupt(0 x33);mouseexist=_AX;mous

19、ebutton=_BX;/*鼠標(biāo)狀態(tài)值初始化*/void mousereset()_AX=0 x00;geninterrupt(0 x33);/*0 x33是DOS中斷,是在DOS下通過調(diào)用中斷來對(duì)鼠標(biāo)進(jìn)行操 作.*/*改變鼠標(biāo)光標(biāo)形狀SHAPE sp:為以上定義的形狀void MouseShape(SHAPE sp)_BX=sp.hotx;_CX=sp.hoty;_ES=FP_SEG(&sp.shape);_DX=FP_OFF(&sp.shape);_AX=0 x09;geninterrupt(0 x33);*/*設(shè)置鼠標(biāo)左右邊界lx:左邊界gx:右邊界 */void mousesetX(i

20、nt lx,int rx)_CX=lx;_DX=rx;_AX=0 x07;geninterrupt(0 x33);/*設(shè)置鼠標(biāo)上下邊界uy:上邊界dy: 下邊界 */void mousesetY(int uy,int dy)_CX=uy; _DX=dy; _AX=0 x08; geninterrupt(0 x33); /*設(shè)置鼠標(biāo)當(dāng)前位置X:橫向坐標(biāo)y: 縱向坐標(biāo) */ void mousesetXY(int X,int y) _CX=X; _DX=y; _AX=0X04; geninterrupt(0X33);/*設(shè)置鼠標(biāo)速度(缺省值:vx=8,vy=l) 值越大速度越慢 */void mousespeed(int vx,int vy) _CX=vx; _DX=vy;_AX=0 x0f; geninterrupt(0 x33); /*獲取鼠標(biāo)按下鍵的信息*/ /*是否按下左鍵 返回值: l=按下 0=釋放*/int leftpress() _AX=0 x03;geninterrupt(0 x33); return(_BX&l); /*是否按下中鍵返回值同上 */ int midd

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論