⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mouse.c

📁 用于计算一个很长的式子
💻 C
字号:
/*鼠标应用程序*/
/*开发日期:2008-07-30*/
/*作者:李士伟*/
#include<stdio.h>
#include<graphics.h>
int InitMouse();
int ReadMouse();
void NewPosition();
void InitCursor();
void DrawCursor();
void InitGraph();
void DrawMat(char *mat,int matsize,int x,int y,int color);
char curimage[8]={0x60,0x70,0x78,0x7c,0x7e,0x7f,0x0c,0x0e};
/*  01100000b,
    01110000b,
    01111000b,
    01111100b,
    01111110b,
    01111111b,
    00001100b,
    00001110b,
*/

void  *ptrCurBackBuf;
void  *ptrCurBuf;
int Buttons=0;
int PressButton=0;
int CurrentX=4,CurrentY=4;

void DrawMat(char *mat,int matsize,int x,int y,int color)
{
    /*功能:在图形模式下输出一个汉字*/
    int i,j,k,n;
    n=(matsize-1)/8+1;
    for(j=0;j<matsize;j++)
        for(i=0;i<n;i++)
            for(k=0;k<8;k++)
                if(mat[j*n+i]&(0x80>>k))  /*测试为1的位则显示*/
                    putpixel(x+i*8+k,y+j,color);
}
int InitMouse()
{
    asm mov ax,0  /*鼠标复位并取状态*/
    asm INT 33h
    Buttons=_BX;
    if(0==_AX)
    {
        printf("Mouse not found or Mouse driver not installed.\n");
        return 0;
    }
    asm mov ax,07h /*;设置水平边界*/
    asm mov cx,4
    asm mov dx,638
    asm int 33h
    asm mov ax,08h  /*;设置垂直边界*/
    asm mov cx,4
    asm mov dx,478
    asm int 33h
    InitCursor();
    ReadMouse();
    DrawCursor();
    setcolor(WHITE);
    line(4,4,636,4);
    line(4,4,4,476);
    line(4,476,636,476);
    line(636,4,636,476);

    return _AX;


}
void InitCursor()
{
    int cursize;
    cursize=imagesize(1,1,8,8);
    ptrCurBackBuf=(void *)malloc(cursize);
    getimage(1,1,8,8,ptrCurBackBuf);
    DrawMat(curimage,8,1,1,WHITE);
    cursize=imagesize(1,1,8,8);
    ptrCurBuf=(void *)malloc(cursize);
    getimage(1,1,8,8,ptrCurBuf);

}
void DrawCursor()
{
    static int x1=1,x2=8,y1=1,y2=8;
    putimage(x1,y1,ptrCurBackBuf,COPY_PUT);
    x1=CurrentX-3;
    x2=CurrentX+4;
    y1=CurrentY-3;
    y2=CurrentY+4;
    getimage(x1,y1,x2,y2,ptrCurBackBuf);  /*画鼠标前先备份背景*/
    putimage(x1,y1,ptrCurBuf,COPY_PUT);  /*画鼠标*/
}
int ReadMouse()
{
    int xnew,ynew;
again:
        if(kbhit()) return getch();
        asm mov ax,3 /* ;调用3号功能读鼠标位置与按键状态*/
        asm INT 33h
        xnew=_CX;
        ynew=_DX;
        PressButton=_BX;
        asm mov ax,xnew
        asm cmp ax,CurrentX
        asm jnz done
        asm mov ax,ynew
        asm cmp ax,CurrentY
        asm jnz done
        asm mov ax,PressButton
        asm cmp ax,0
        asm jnz done
        asm jmp again
done:
    CurrentX=xnew;
    CurrentY=ynew;

    return -1;
}
void NewPosition()
{
    int ch;
    ch=ReadMouse();
    if(ch!=-1)printf("%c",ch);
    DrawCursor();
}
void InitGraph()
{
    int gdriver, gmode;
    registerbgidriver(EGAVGA_driver);
    detectgraph(&gdriver,&gmode);
    initgraph(&gdriver,&gmode,"");
    cleardevice();
}
void main()
{
    InitGraph();
    setbkcolor(BLUE);
    InitMouse();
next: NewPosition();
    asm jmp next
}

⌨️ 快捷键说明

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