全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1498
推到 Plurk!
推到 Facebook!

DOS下控制滑鼠

尚未結案
sigmaccc
一般會員


發表:32
回覆:40
積分:14
註冊:2003-11-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-14 15:22:43 IP:203.204.xxx.xxx 未訂閱
小弟用Turbo C在DOS寫了一個需用到滑鼠的應用程式。 是用800x600 16色繪圖模式。 但滑鼠卻是一次移動8個點。 且無法顯示出滑鼠游標。 請問有人知道該如何解決或何處有參考資料嗎? 謝謝。
sigmaccc
一般會員


發表:32
回覆:40
積分:14
註冊:2003-11-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-26 16:24:50 IP:203.204.xxx.xxx 未訂閱
將原始程式貼上,照理說滑鼠一次移動應為一個點。 但為何切至800x600模式後,一次卻是移動8個點呢? 麻煩大家指點了。感激不盡。    #include  #include #include #include #include #include #include #include #include #include <math.h> #include #include #include #include #include #include #include char Reset(void); void Set_X_Range(int min,int max); void Set_Y_Range(int min,int max); void Get_XY(int *x,int *y); void main(void) { int Mouse_X; int Mouse_Y; _AX=0x4f02; _BX=0x102; __int__(0x10); Reset(); Set_X_Range(0,799); Set_Y_Range(0,599); while(1) { Get_XY(&Mouse_X,&Mouse_Y); gotoxy(1,1); printf("x=d y=d",Mouse_X,Mouse_Y); if(kbhit()) break; } _AX=0x03; __int__(0x10); } char Reset(void) { union REGS ireg,oreg; ireg.x.ax=0; int86(0x33,&ireg,&oreg); if(oreg.x.ax==0) return(0); else return(1); } void Set_X_Range(int min,int max) { union REGS ireg; ireg.x.ax=7; ireg.x.cx=min; ireg.x.dx=max; int86(0x33,&ireg,&ireg); } void Set_Y_Range(int min,int max) { union REGS ireg; ireg.x.ax=8; ireg.x.cx=min; ireg.x.dx=max; int86(0x33,&ireg,&ireg); } void Get_XY(int *x,int *y) { union REGS ireg,oreg; ireg.x.ax=3; int86(0x33,&ireg,&oreg); *x=oreg.x.cx; *y=oreg.x.dx; }
sigmaccc
一般會員


發表:32
回覆:40
積分:14
註冊:2003-11-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-28 15:45:27 IP:203.204.xxx.xxx 未訂閱
這個問題小弟自己找到答案了。 microsoft mouse driver 舊的版本用在800x600模式,滑鼠一次移動就是8個點。 小弟將驅動程式換成10.0版就正常了。 提供大家參考。
系統時間:2024-05-03 5:09:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!