荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: DOS下的面向对象程序设计续6
发信站: BBS 荔园晨风站 (Thu Jan 21 21:03:21 1999), 转信

下面给出InitMouseAndKeyboard()函数及鼠标事件处理函数
以供参考。
void DOSGraApp::InitMouseAndKeyboard()
{
int x,y;
int midx,midy;
int exist;
int Low,High;
long int Address;
x=GetWindowWidth()-1;//GetWindowWidth是笔者写的取得屏幕宽度的函数
y=GetWindowHeight()-1;//GetWindowWidth是笔者写的取得屏幕高度的函数
midx=x/2;
midy=y/2;
//detect mouse
asm MOV AX,0
asm INT 33H
asm MOV exist,AX
if(!exist)
  {
  return;
  }
//set mouse cursor
asm MOV AX,1
asm INT 33H
//init mouse position
asm MOV AX,4
asm MOV CX,midx
asm MOV DX,midy
asm INT 33H
prex=midx;
prey=midy;
prestate=0;
//set mouse active area
asm MOV AX,7
asm MOV CX,0
asm MOV DX,x
asm INT 33H
asm MOV AX,8
asm MOV CX,0
asm MOV DX,y
asm INT 33H
//定义事件处理器
Address=(long int)SetMouseProcess;
Low=FP_OFF(Address);
High=FP_SEG(Address);
asm MOV AX,14H
asm MOV CX,31
asm MOV DX,Low
asm MOV ES,High
asm INT 33H
HighAdd=_ES;
LowAdd=_DX;
Code=_CX; //Code 是个全局变量,保存原鼠标事件处理器入口
LTime=0;//全局变量,判断鼠标左键的双击
RTime=0;//全局变量,判断鼠标右键的双击
//set  timer
oldint1c=getvect(0x1C);
setvect(0x1c,newint1c);
//get keyboard
oldint9=getvect(9);
setvect(9,newint9);
}
//注意:退出时要恢复所接管的中断
待续


--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店