分享
 
 
 

EGL--鼠标类函数实现文件 MOUSE.INC

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

/*

MOUSE.INC

*/

void pascal set_event_handler(int call_mask,void far( *location)())

{

union REGS r;

struct SREGS sr;

if(MOUSE_THERE){ /* THE MOUSE FUNCTION 12 */

r.x.ax=12;

r.x.cx=call_mask;

r.x.dx=FP_OFF( location );

sr.es=FP_SEG( location );

int86x(0x33,&r,&r,&sr);

}

}

/*---------------------------------------------------------------------*/

void near event_processor(int event_status,int button_status,int x,int y)

/* LOAD THE MOUSE EVENT PROGRAGM */

{

if(MOUSE_THERE){

if( (CMX!=x) || (CMY!=y) ){

MOUSE_MOVED=1;

CMX=x; CMY=y;

}

else

MOUSE_MOVED=0;

BSTATE=button_status;

if(event_status & 2){ LBUTTON_DOWN=1; LBUTTON_UP=0; }

if(event_status & 8){ RBUTTON_DOWN=1; RBUTTON_UP=0; }

if(event_status & 4){ LBUTTON_UP=1; LBUTTON_DOWN=0; }

if(event_status & 16){ RBUTTON_UP=1; RBUTTON_DOWN=0; }

}

}

/*--------------------------------------------------------------------*/

int reset_mouse(void) /* THE MOUSE FUNCTION 0 */

{

_AX=0;

geninterrupt(0x33);

if(_AX>0){

MOUSENUM=_AX;

MOUSE_THERE=1;

mouse_on();

return(OK);

}

else{

MOUSE_THERE=0;

return(ERROR);

}

}

/*-------------------------------------------------------------------*/

void mouse_off(void) /* THE MOUSE FUNCTION 2 */

{

if( !MOUSE_THERE || MOUSE_VISIBLE==0 ) return;

_AX=2;

geninterrupt(0x33);

MOUSE_VISIBLE=0;

}

/*-------------------------------------------------------------------*/

void mouse_on(void) /* THE MOUSE FUNCTION 1 */

{

if( !MOUSE_THERE || MOUSE_VISIBLE==1 ) return;

_AX=1;

geninterrupt(0x33);

MOUSE_VISIBLE=1;

}

/*-------------------------------------------------------------------*/

void mouse_shape(int shape[32],int hotx,int hoty)

{

union REGS regs;

struct SREGS sregs;

mouse_off();

regs.x.ax=9;

regs.x.bx=hotx;

regs.x.cx=hoty;

regs.x.dx=FP_OFF(shape);

sregs.es=FP_SEG(shape);

int86x(0x33,&regs,&regs,&sregs);

mouse_on();

}

/*------------------------------------------------------------------*/

void set_mouse_position(int x,int y)

{

_AX=4;

_CX=x;

_DX=y;

geninterrupt(0x33);

}

/*-------------------------------------------------------------------*/

/*

调用双击的条件为判断是否为左键下

当调用双击不成时,再检查一次左键按下否,如下,{则说明刚才为单击,将左键状态消去}

即:每次调用双击后,必须再调用一次单击,否则有可能丢失键击状态

if( LBUTTON_DOWN ){

if( get_double_press() ) ... 双击如何

else ...单击如何

}

*/

int get_double_press(void); /* get if lbutton was pressed twice */

int get_double_press(void)

{

int x,y;

if( LBUTTON_DOWN ){

LBUTTON_DOWN=0;

x=CMX; y=CMY;

Delay(DOUBLE_CLICK_TIME);

if(LBUTTON_DOWN && x==CMX && y==CMY){

LBUTTON_DOWN=0;

LBUTTON_UP=0;

return(1);

}

else{

LBUTTON_DOWN=1;

return(0);

}

}

}

/*--------------------------------------------------------------------*/

void set_text_cursor(int groundmask,int textmask)

{

_AX=10;

_BX=0;

_CX=groundmask;

_DX=textmask;

geninterrupt(0x33);

}

/*--------------------------------------------------------------------*/

void InstallEvent(void)

{

set_event_handler(127,event_handler);

}

/*-----------------------------------------------------------*/

void reset_event_status(void)

{

MOUSE_MOVED=0; LBUTTON_DOWN=0;

RBUTTON_DOWN=0; LBUTTON_UP=0;

RBUTTON_UP=0; BSTATE=0;

}

/*------------------------------------------------------------------------*/

void set_mousex(int minx,int maxx)

{

_AX=7;

_CX=minx; _DX=maxx;

geninterrupt(0x33);

}

/*-----------------------------------------------------------------------*/

void set_mousey(int miny,int maxy)

{

_AX=8;

_CX=miny; _DX=maxy;

geninterrupt(0x33);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有