C語言廣泛的被運用在很多低階的開發,如今的OS幾乎都已經進入到[視窗環境]了,Console Mode已經算是式微的東西了.但是你知道嗎?這些式微的東西,竟是這些視窗環境,線上遊戲...的幕後功臣.因為一些機緣,今天有機會再把這些東西拿出來看看,也分享給有興趣的人...
我想沒有滑鼠的話,我想很多人都沒辦法操作Windows吧.
在Dos模式中,你要怎麼去使用它呢?
在C語言中,你必須先Include這個<dos.h>
像是這樣 #include <dos.h >
然後就可以使用這個函數 int86()
函數原型:int int86(int intno, union REGS *inregs , union REGS *outregs)
滑鼠的中斷位置是""0x33"
以下有些範例提供參考:
宣告廣域(Global)變數
union REGS i,o;
(1)確認驅動程式是否載入
int SubCheckMouseLoadedStatus(){
clrscr();
i.x.ax=0;
int86(0x33,&i,&o);
if(o.x.ax == _NORMAL) //Not Loaded
{
printf("No Mouse Available...Please Check it!");
return(_ERROR);
}else{ //Loaded
return(_NORMAL);
}
}
#基本上進入Windows都會載入滑鼠驅動程式,如果真的要在純DOS下開發的話,可能需要自行至你的滑鼠官方晚站下載驅動程式
(2)顯示滑鼠游標
void SubEnableMousePointer()
{
i.x.ax=1; //Enable = 1
int86(0x33,&i,&o);
}
(3)隱藏滑鼠游標
void SubDisableMousePointer()
{
i.x.ax=2; //Disable = 2
int86(0x33,&i,&o);
}
(4)顯示滑鼠座標
.......
i.x.ax = 3;
int86(0x33,&i,&o);
while(!kbhit())
{
SubDisplayMousePosition(o.x.cx,o.x.dx);
......
}
void SubDisplayMousePosition(int x,int y)
{
gotoxy(62,23); //到螢幕某顯示資訊
textcolor(15); //設定Text Color
cprintf("x:%2d y:%2d ",1+x/8,1+y/8); //除以8 可得Text Mode的座摽
}
螢幕的原點是位於左上角(1,1)
(5)抓取使用中滑鼠按鍵
......
SubDisplayMouseButtonStatus(o.x.bx);
......
void SubDisplayMouseButtonStatus(int s)
{
textcolor(15);
gotoxy(72,23);
if(s == 0)//沒有任何鍵被按下
{
cprintf("L:%c R:%c",176,176);
}else if(s==1){ //左鍵按下
cprintf("L:%c R:%c",219,176);
}else if(s==2){ //右鍵按下
cprintf("L:%c R:%c",176,219);
}else if(s==3){ //左右鍵同時按下
cprintf("L:%c R:%c",219,219);
}else{
cprintf("L:%c R:%c",176,176);
}
textcolor(current_color);
}
參考文件:
Mouse Programming
歡迎跟我連絡
本頁最下方有Web MSN可以直接跟我交談喔!
免安裝程式...哈哈 歡迎聊天
免安裝程式...哈哈 歡迎聊天
2008年3月17日 星期一
DOS下,如何使用滑鼠
訂閱:
張貼留言 (Atom)
0 個回應:
張貼留言