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

📄 mymouse.h

📁 这是毕业设计的程序主要是图书管理功能,希望大家给给意见
💻 H
字号:
/* ==================================================== */
/*                                                      */
/* 学生宿舍管理系统Ver 1.00.1 源代码                    */
/* 文件名: MyMouse.cpp                                  */
/* 作用: 该部分负责处理鼠标的相关操作,包括鼠标的箭头的  */
/*       描绘等等                                       */
/* 版权所有 (c) 2007  张元龙 保留所有权利               */
/*                                                      */
/* ==================================================== */

#include <dos.h>
#include <graphics.h>

#include "MyChn.h"

#ifndef MouseDefined
#define MouseDefined

int MouseX=-1,MouseY=-1;                    /*鼠标坐标*/
bool Left_Pressed;                          /*鼠标左键是否按下*/
bool Right_Pressed;                         /*鼠标右键是否按下*/

bool MouseDestroyed=true;                   /*是否已经消除鼠标光标*/
bool MouseShowed=false;                     /*是否已经显示鼠标光标*/

int mouse_draw[16][16];
byte pixsave[16][16];

void MouseMath()                            /*计算鼠标箭头的样子*/
{
    int i,j,jj,k;
    int up[16][16],down[16][16];
    long UpNum[16]={
        0x3fff,0x1fff,0x0fff,0x07ff,
        0x03ff,0x01ff,0x00ff,0x007f,
        0x003f,0x00ff,0x01ff,0x10ff,
        0x30ff,0xf87f,0xf87f,0xfc3f
    };
    long   DownNum[16]={
        0x0000,0x7c00,0x6000,0x7000,
        0x7800,0x7c00,0x7e00,0x7f00,
        0x7f80,0x7e00,0x7c00,0x4600,
        0x0600,0x0300,0x0300,0x0180
    };
    for(i=0;i<16;i++){
        j=jj=15;
        while(UpNum[i]!=0){
            up[i][j]=UpNum[i]%2;
            j--;
            UpNum[i]/=2;
        }
        while(DownNum[i]!=0){
            down[i][jj--]=DownNum[i]%2;
            DownNum[i]/=2;
        }
        for (k=j;k>=0;k--)
            up[i][k]=0;
        for (k=jj;k>=0;k--)
            down[i][k]=0;
        for (k=0;k<16;k++){                 /*四种组合方式*/
            if (up[i][k]==0&&down[i][k]==0)
                mouse_draw[i][k]=1;
            else if(up[i][k]==0&&down[i][k]==1)
                mouse_draw[i][k]=2;
            else if(up[i][k]==1&&down[i][k]==0)
                mouse_draw[i][k]=3;
            else
                mouse_draw[i][k]=4;
        }
    }
 mouse_draw[1][2]=4;                        /*特殊点*/
}

void DestroyMouse(){
    if (MouseDestroyed) return;
    MouseShowed=false;
    MouseDestroyed=true;
    if (MouseX<MAXX-16 && MouseY<MAXY-16)
        putimage(MouseX,MouseY,pixsave,0);
    else {
        int i,j;
        for (i=0;i<16;i++)
            for (j=0;j<16;j++)
                if (mouse_draw[i][j]==1 || mouse_draw[i][j]==2)
                    putpixel(MouseX+j,MouseY+i,pixsave[i][j]);
    }
}

void DrawMouse(){
    int i,j;
    if (MouseShowed) return;
    MouseDestroyed=false;
    MouseShowed=true;
    if (MouseX<MAXX-16 && MouseY<MAXY-16)
        getimage(MouseX,MouseY,MouseX+15,MouseY+15,pixsave);
    else{
        for (i=0;i<16;i++)
            for (j=0;j<16;j++)
                if (mouse_draw[i][j]==1 || mouse_draw[i][j]==2)
                    pixsave[i][j]=getpixel(MouseX+j,MouseY+i);
    }
    for (i=0;i<16;i++)
        for (j=0;j<16;j++)
            if (mouse_draw[i][j]==1){
                putpixel(MouseX+j,MouseY+i,0);
            }
            else if (mouse_draw[i][j]==2){
                putpixel(MouseX+j,MouseY+i,15);
            }
}

void MouseUpdate(){                         /*更新鼠标状态*/
    int NewMouseX,NewMouseY;
    _AX=0x03;
    geninterrupt(0x33);
    NewMouseX=_CX;
    NewMouseY=_DX;                          /*获取鼠标坐标*/
    Left_Pressed=(_BX&1);                   /*获取鼠标左键状态*/
    Right_Pressed=(_BX&2)>>1;               /*获取鼠标右键状态*/

    if (MouseX!=NewMouseX || MouseY!=NewMouseY){        /*当鼠标发生移动时重绘鼠标*/
        DestroyMouse();
        MouseX=NewMouseX;
        MouseY=NewMouseY;
        DrawMouse();
    }
}

/*设置鼠标可移动的矩形区域*/
void SetMouseRect(int x1,int y1,int x2,int y2){

    _CX=x1;
    _DX=x2;
    _AX=0x07;                               /*设置X的边界*/
    geninterrupt(0x33);

    _CX=y1;
    _DX=y2;
    _AX=0x08;                               /*设置Y的边界*/
    geninterrupt(0x33);    

}

void MouseInit(){                           /*鼠标初始化*/
    static AlreadyInit=false;               /*确保初始化工作只执行一次*/
    if (AlreadyInit) return;
    AlreadyInit=true;
    MouseMath();

    _AX=0x00;
    geninterrupt(0x33);                    /*Mouse Reset*/

    SetMouseRect(0,0,MAXX,MAXY);

    _CX=300;
    _DX=250;
    _AX=0x04;
    geninterrupt(0x33);

    MouseUpdate();    
}

#endif

⌨️ 快捷键说明

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