📄 mouse.h
字号:
#include<dos.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#ifndef _MOUSE_H_INCLUDED
#define _MOUSE_H_INCLUDED
#if !defined(_ENABLE_AUTODEPEND)
#pragma read_only_file;
#endif
#ifdef __cplusplus
extern "C" {
#endif
// This is Mouse msg
#define WAITING 0x00
#define MOUSEMOVE 0x01
#define LEFTPRESS 0x02
#define LEFTCLICK 0x03
#define RIGHTPRESS 0x04
#define RIGHTCLICK 0x05
char event1=FALSE;
extern short mouse_x=0,mouse_y=0;
extern char mouse_b=0;
void mouse_drive();
//鼠标形状定义
unsigned char mouse_cursor_bak_shap[16][16]=
{
CYAN, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
BLACK, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
BLACK, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
BLACK, WHITE, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
BLACK, WHITE, WHITE, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
BLACK, WHITE, WHITE, CYAN, WHITE, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
CYAN, BLACK, CYAN, CYAN, BLACK, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
CYAN, CYAN, CYAN, CYAN, CYAN, BLACK, WHITE, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
CYAN, CYAN, CYAN, CYAN, CYAN, BLACK, WHITE, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN,
CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, BLACK, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN, CYAN
};
void _loadds far hook_mouse( short max, short mbx, short mcx, short mdx)
{
int i,j;
static unsigned char shap_bak[16][16];
_disable();
grp_mouse.msg=0;
grp_mouse.x=mcx;
grp_mouse.y=mdx;
unsigned char ccol;
if(grp_mouse.event&&event1)
{
for(i=0;i<16;i++)
for(j=0;j<16;j++)
putpixel(screen,grp_mouse.oldx+j,grp_mouse.oldy+i,shap_bak[i][j]);
grp_mouse.msg=1;
}
if(grp_mouse.event)
{
for(i=0;i<16;i++)
for(j=0;j<16;j++)
{shap_bak[i][j]=getpixel(screen,grp_mouse.x+j,grp_mouse.y+i);
ccol=grp_mouse.mouse_shap[i][j];
if(ccol!=CYAN)putpixel(screen,grp_mouse.x+j,grp_mouse.y+i,ccol);
}
event1=TRUE;
}
if(mbx&1){grp_mouse.click_left=TRUE;grp_mouse.msg=0x02;}
else {
if(grp_mouse.click_left){grp_mouse.msg=0x03;grp_mouse.click_left=FALSE;}
}
if(mbx&2){grp_mouse.click_right=TRUE;grp_mouse.msg=0x04;}
else {
if(grp_mouse.click_right){grp_mouse.msg=0x05;grp_mouse.click_right=FALSE;}
}
if(grp_mouse.oldx!=grp_mouse.x||grp_mouse.oldy!=grp_mouse.y)grp_mouse.msg=0x01;
grp_mouse.oldx=grp_mouse.x;
grp_mouse.oldy=grp_mouse.y;
mouse_x=grp_mouse.x;
mouse_y=grp_mouse.y;
mouse_b=mbx;
_enable();
}
#pragma aux hook_mouse parm [EAX] [EBX] [ECX] [EDX]
void mouse_reset()
{union REGS r;
r.w.ax=0;
int386(0x33,&r,&r);
if(mouse_cursor_bak_shap!=NULL)delete []mouse_cursor_bak_shap;
}
void setmouse_xy(int x,int y)
{union REGS r;
r.w.ax=4;
r.w.cx=x;
r.w.dx=y;
int386(0x33,&r,&r);
}
char mouse_init()
{
union REGS r;
r.w.ax=0;
int386(0x33,&r,&r);
if(!r.w.ax){return 0;}
mouse_drive();
memcpy(grp_mouse.mouse_shap,mouse_cursor_bak_shap,256);
set_mouse_range(0,0,SCREEN_W,SCREEN_H);
grp_mouse.event=FALSE;
grp_mouse.click_left=FALSE;
grp_mouse.click_right=FALSE;
setmouse_xy(SCREEN_W>>1,SCREEN_H>>1);
atexit(mouse_reset);
return 1;
}
void show_mouse()
{grp_mouse.event=TRUE;
}
void hide_mouse()
{grp_mouse.event=FALSE;
event1=FALSE;
}
void set_mouse_cursor(unsigned char mouse_cursor[16][16])
{
if(mouse_cursor!=NULL)
{
memcpy(grp_mouse.mouse_shap,mouse_cursor,256);
}
else
{
memcpy(grp_mouse.mouse_shap,mouse_cursor_bak_shap,256);
}
}
void set_mouse_range(int x,int y,int x1,int y1)
{union REGS r;
r.w.ax=7;
r.w.cx=x;
r.w.dx=x1;
int386(0x33,&r,&r);
r.w.ax=8;
r.w.cx=y;
r.w.dx=y1;
int386(0x33,&r,&r);
}
void mouse_drive()
{union REGS r;
struct SREGS sr;
r.w.ax=0x0c;
r.w.cx=0xff;
r.x.edx=FP_OFF(hook_mouse);
segread( &sr );
sr.es=FP_SEG(hook_mouse);
int386x(0x33,&r,&r,&sr);
}
char mouse_xy(short x,short y,short x1,short y1)
{if(grp_mouse.x>=x&&grp_mouse.x<=x1&&grp_mouse.y>y&&grp_mouse.y<=y1)
return 1;
else
return 0;
}
#ifdef __cplusplus
};
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -