c - 鼠标不接受输入

标签 c bgi

我正在尝试实现鼠标交互,但输入功能出了问题。它应该告诉我,我已经进行了左键单击或右键单击,但它没有打印任何内容。看看:

#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 - 这是否保证它们为零是任何人的猜测。

关于c - 鼠标不接受输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3381396/

相关文章:

c++ - opengl c++ 中的边界填充算法

c - c/c++ 中的 3D 或 2D 图形?

c - 有没有办法强制将变量存储在 C 的缓存中?

c - 结构体中的数组和初始化

c - 如何使函数 printf 将其输出输出到文件或控制台上?

c - 内存丢失 Valgrind

C结构体指针问题

c - C 中的图形函数

c++ - 如何使用graphics.h获取光标相对于窗口的位置?

c - 带有图形的程序被中止,即使调用了 XInitThreads