mouse.c

来自「坦克大战,实现基本的游戏功能」· C语言 代码 · 共 77 行

C
77
字号
/*
    mouse.c

    鼠标操作相关的函数实现
    最后修改: 2007-06-19

*/

#include "mouse.h"
#include <dos.h>

char InstallMouse(int nMinX, int nMinY, int nMaxX, int nMaxY)
{
    union REGS r;
    int retcode;
    r.x.ax=0;
    int86(0x33, &r, &r);
    retcode=r.x.ax;
    if(retcode==0) /* 鼠标初始化失败 */
    {
        return 0;
    }
    
    r.x.ax=7;
    r.x.cx=nMinX;
    r.x.dx=nMaxX;
    int86(0x33, &r, &r); /* 设置水平范围 */
    r.x.ax=8;
    r.x.cx=nMinY;
    r.x.dx=nMaxY;
    int86(0x33, &r, &r); /* 设置垂直范围 */

    return retcode;
}

char GetButtonState(char byButton)  /* 取鼠标按键状态 */
{
    unsigned char res;
    union REGS r;

    r.x.ax=3;
    int86(0x33, &r, &r);

    res=r.x.bx;
    if(byButton==RBUTTON)
    {
        res=(res>>1);
    }
    res&=0x01;

    switch(res)
    {
    case 0: return RELEASED;
    case 1: return PRESSED;
    }
}

void GetMousePosition(int *pnX, int *pnY)  /* 取鼠标指针位置 */
{
    union REGS r;

    r.x.ax=3;
    int86(0x33, &r, &r);
    *pnX=r.x.cx;
    *pnY=r.x.dx;
}

void SetMousePosition(int nX, int nY)  /* 重设鼠标位置 */
{
    union REGS r;

    r.x.ax=4;
    r.x.cx=nX;
    r.x.dx=nY;
    int86(0x33, &r, &r);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?