GEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEG G G G EASY GRAPHICS 库函数用户手册 G G G GEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEG
基础函数
/////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////KEY.INC int GetKey() 接受键盘的输入 返回值: 如果为普通ASCII码,直接返回; 如果为扩展的ASCII码,返回扩展码*100+基本码。 int GetStatusKey(int cmd) 判断CTRL,ALT,SHIFT键的触发状态 如果指定的键按下,返回真 指定的键cmd包括:R_SHIFT L_SHIFT CTRL ALT int Kbhit() 判断是否键盘中有键已经被按下 有键盘缓冲区中有数据,则返回真 直接读取键盘缓冲区,用以取代TC提供的采用BIOS方式缓慢的按键判断kbhit() void ClearKeyBuffer() 清空键盘缓冲区 采用直接访问键盘缓冲区方式
//////////////////////////////////////////////////////////////////////////////// ////////////////////////MOUSE.INC void pascal set_event_handler(int call_mask,void far( *location)()) 设置鼠标器驱动程序的响应函数 call_mask:鼠标器事件请求的掩码,location 响应函数的地址 location用汇编写成,已编译成目标代码 void near event_processor(int event_status,int button_status,int x,int y) 鼠标器事件处理函数 由鼠标器事件响应函数调用,将传递的事件掩码解释为变量形式 int reset_mouse(void) 复位鼠标器驱动程序或检测鼠标器存在否 如鼠标器不存在,返回假 置光标计数器为-1 位置为屏幕中央 鼠标器事件响应函数为空 光标形状为默认形状光标 void mouse_off(void) 关闭光标的显示 void mouse_on(void) 打开光标的显示 void mouse_shape(int shape[32],int hotx,int hoty) 改变光标的形状 光标是一个16*16点阵位图,前16元素为形状码,后16元素为掩码 改变之前必须关闭光标的显示,否则在图形下会破坏背景 shape形状掩码,hotx,hoty光标热点 void set_mouse_position(int x,int y) 移动光标到新位置 int get_double_press(void) 判断鼠标器双击 如果产生双击事件,返回真 注意: 调用***双击的条件***为为左键下,只有已击键了才检查双击 当鼠标左键非双击,则此次是一次单击事件 即:每次调用双击后,必须再调用一次单击,否则有可能丢失键击状态 if( LBUTTON_DOWN ){ if( get_double_press() ) ... 双击如何 else ...单击如何 LBUTTON_DOWN=0 } void InstallEvent(void) 安装鼠标器事件响应函数 采用消息通知的手段,提供一个非查询访问鼠标器状态的有效方法 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) 设置光标位置X方向的极值 void set_mousey(int miny,int maxy) 设置光标位置Y方向的极值
/////////////////////////////////////////////////////////////////////////////// ///////////////XMS.INC char *xms_2_basemem_buffer 扩充内存与基本内存之间缓冲区的指针 int xms_init() 扩充内存服务程序初始化 检测HIMEM.SYS存在否,并为扩充内存与基本内存缓冲区分配内存 如HIMEM.SYS未加载,或无法分配缓冲区,返回假 int end_xms() 结束扩充内存服务 如程序中采用了扩充内存服务,在程序退出前要结束扩充内存服务程序 int xms_free(int xms_handle) 释放由句柄占用的扩充内存 xms_handle: 扩充内存块句柄 如未成功释放掉扩充内存块,返回假 int xms_movedata( struct xms_move *m ) 将数据在扩充内存与基本内存之间传送 失败返回假 xms_move结构体定义如下: struct xms_move{ long byte_count; /* 每次传送多少个字节 */ unsigned source_handle; /* 源区句柄 */ long source_offset; /* 源区偏移量 */ unsigned destination_handle; /* 目的区句柄 */ long destination_offset; /* 目的区偏移量 */ }; int xms_malloc( unsigned memKB ) 分配扩充内存 分配成功返回句柄,分配失败返回假 memKB要求的扩充内存容量,以KB为单位 void xms_interface(union REGS *inregs,union REGS *outregs) 提供扩充内存服务的接口函数
/////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////DELAY.INC void InitTimer() 初始化整个延时系统 函数修改了时钟中断0x08,因此这个函数只可被调用一次 在程序中尽量不要再修改时钟中断 在程序结束前必须要调用EndTimer,以恢复0x08中断 int CreateTimer(int dida,unsigned int id) 创建一个要求延时请求的例子 如未申请成功,返回假;原因为例子数组已满 dida:滴达数 id:这个例子的ID,ID 为一个正整数,用来识别不同的例子 int CheckTimeOut(unsigned int id) 判断指定id的例子延时到来否 延时到来,返回真 如返回假,说明延时未到,或指定的ID错误 void Delay(int dida) 用来代替delay函数的代码,使不同机型可产生相等时间的延时 dida:指定的延时单位,以滴达为单位 注意:当要求的滴达较小时,可能会产生延时小于要求的情况 这是采用时钟中断延时固有的缺陷,当要求滴达较大时, 这种情况可能忽略 void ReleaseTimer(int id) 释放指定ID的例子 当要求的例子不用时,应释放,以节省资源 void EndTimer() 结束延时服务,恢复系统状态 当完成延时后应调用,否则在程序退出后,系统可能死机 
|