鼠标没有输入

问题描述:

我试图实现鼠标interfecing,但有些输入函数错误。它应该告诉我,wheater我做了左键单击或右键单击,但它不打印任何东西。看看:鼠标没有输入

#include<graphics.h> 
#include<dos.h> 
union REGS in,out; 
void Graphics(void); 
void DetectMouse(void); 
void ShowMouse(void); 
void HideMouse(void); 
void InputMouse(void); 
int main() 
{ 
    Graphics(); 
    DetectMouse(); 
    ShowMouse(); 
     // HideMouse(); 
    InputMouse(); 
    getch(); 
    closegraph(); 
    return 0; 
} 
void Graphics(void) 
{ 
    int driver=DETECT,mode; 
    initgraph(&driver,&mode,"C:\\TC\\bgi"); 
    outtextxy(1,1,"Graphics mode activated!"); 
} 
void DetectMouse(void) 
{ 
    int result; 
    in.x.ax=0; 
    result=int86(0x33,&in,&out); 
    if(result) 
    { 
     outtextxy(10,10,"Driver succesfully detected"); 
    } 
    else 
    { 
     outtextxy(10,10,"Driver not detected"); 
    } 
} 
void ShowMouse(void) 
{ 
    in.x.ax=1; 
    int86(0x33,&in,&out); 
} 
void HideMouse(void) 
{ 
    in.x.ax=2; 
    int86(0x33,&in,&out); 


} 
void InputMouse(void) 
{ 
    for(;kbhit();) 
    { 
    int x,y; 
    in.x.ax=3; 
    int86(0x33,&in,&out); 
    if(out.x.bx==1) 
     outtextxy(30,30,"Left click"); 
    if(out.x.bx==2) 
     outtextxy(40,40,"Right click"); 
    if(out.x.bx==3) 
     outtextxy(50,50,"Middle click"); 
    delay(100); 
    } 
} 

尝试if((out.x.bx & 1) != 0) ... - 即只检查第0位 - 我注意到INT33 AX = 3的许多标志是'未使用' - 是否这保证它们为零或不是任何人的猜测。

你可能想要一个主循环。 INT 33 AX = 0003不会阻止等待鼠标输入。