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()
结束延时服务,恢复系统状态
当完成延时后应调用,否则在程序退出后,系统可能死机
本文地址:http://com.8s8s.com/it/it25075.htm