E6
E7
E8
E9
00E61CE8
ax 00E70D79
an 00E81D74
xax
SDPSanSPxPDxSSPxDSDSPDSa
00E95CE6
naxxn EA
00EA02E9 EB
00EB0849 EC
00EC02E8 ED
00ED0848 EE
00EE0086 EF
00EF0A08 F0
00F00021 F1
00F10885 F2
00F20B05 F3
00F3022A F4
00F40B0A F5
00F50225 F6
00F60265 F7
00F708C5
DPSao DPSxno SDPao SDPxno DSo SDPnoo P PDSono PDSnao PSno PSDnao PDno PDSxo PDSano
SRCPAINT PATCOPY
F8
F9
FA
FB
FC
FD
FE
FF
00F802E5 00F90845 00FA0089 00FB0A09 00FC008A 00FD0A0A 00FE02A9 00FF0062
PDSao PDSxno DPo DPSnoo PSo PSDnoo DPSoo 1
PATPAINT
WHITENESS
2.6鼠标相关函数
鼠标消息缓冲区可以缓冲63个未处理的鼠标消息。每一次GetMouseMsg将从鼠标消息缓冲区取出一个最早发生的消息。当鼠标消息缓冲区满了以后,不再接收任何鼠标消息。2.6.1相关函数和数据如下:
函数或数据 FlushMouseMsgBuffer
GetMouseMsg MouseHit MOUSEMSG
描述
清空鼠标消息缓冲区。
获取一个鼠标消息。如果当前鼠标消息队列中没有,就一直等待。
检测当前是否有鼠标消息。 保存鼠标消息的结构体。
2.6.2FlushMouseMsgBuffer 这个函数用于清空鼠标消息缓冲区。 voidFlushMouseMsgBuffer(); 2.6.3GetMouseMsg
这个函数用于获取一个鼠标消息。如果当前鼠标消息队列中没有,就一直等待。 MOUSEMSGGetMouseMsg(); 返回值:
返回保存有鼠标消息的结构体。 示例:
请参见示例程序中的“鼠标操作范例”。
2.6.4MouseHit
这个函数用于检测当前是否有鼠标消息。 boolMouseHit(); 参数: 返回值:
如果存在鼠标消息,返回true;否则返回false。 2.6.5MOUSEMSG
这个结构体用于保存鼠标消息,定义如下: structMOUSEMSG {
UINTuMsg;//当前鼠标消息 boolmkCtrl;//Ctrl键是否按下 boolmkShift;//Shift键是否按下 boolmkLButton;//鼠标左键是否按下 boolmkMButton;//鼠标中键是否按下 boolmkRButton;//鼠标右键是否按下 intx;//当前鼠标x坐标(物理坐标) inty;//当前鼠标y坐标(物理坐标) intwheel;//鼠标滚轮滚动值 }; 成员: uMsg:
指定鼠标消息类型,可为以下值: 值
WM_MOUSEMOVE WM_MOUSEWHEEL
WM_LBUTTONDOWN
WM_LBUTTONUP WM_LBUTTONDBLCLK
WM_MBUTTONDOWN
WM_MBUTTONUP WM_MBUTTONDBLCLK
含义
鼠标移动消息。 鼠标滚轮拨动消息。
左键按下消息。 左键弹起消息。 左键双击消息。 中键按下消息。 中键弹起消息。 中键双击消息。
WM_RBUTTONDOWN
WM_RBUTTONUP WM_RBUTTONDBLCLK
右键按下消息。 右键弹起消息。 右键双击消息。
mkCtrlCtrl键是否按下 mkShiftShift键是否按下 mkLButton鼠标左键是否按下 mkMButton鼠标中键是否按下 mkRButton鼠标右键是否按下 X当前鼠标x坐标(物理坐标) y当前鼠标y坐标(物理坐标)
wheel鼠标滚轮滚动值,为120的倍数。 2.7其它函数
2.7.1相关函数和数据如下: 函数或数据 BeginBatchDraw
EndBatchDraw
FlushBatchDraw
GetEasyXVer
InputBox
描述
开始批量绘图。
结束批量绘制,并执行未完成的绘制任务。
执行未完成的绘制任务。 获取当前EasyX库的版本信息。 以对话框形式获取用户输入。
2.7.2BeginBatchDraw
这个函数用于开始批量绘图。执行后,任何绘图操作都将暂时不输出到屏幕上,直到执行FlushBatchDraw或EndBatchDraw才将之前的绘图输出。
voidBeginBatchDraw(); 示例:
以下代码实现一个圆从左向右移动,会有比较明显的闪烁。 请取消main函数中的三个注释,以实现批绘图功能,可以消除闪烁。
#include
initgraph(640,480); setcolor(WHITE);
setfillstyle(RED); //BeginBatchDraw(); for(inti=50;i<600;i++) {
circle(i,100,40); floodfill(i,100,WHITE); //FlushBatchDraw(); Sleep(10); cleardevice(); }
//EndBatchDraw(); closegraph(); }
2.7.3EndBatchDraw
这个函数用于结束批量绘制,并执行未完成的绘制任务。 //结束批量绘制,并执行未完成的绘制任务 voidEndBatchDraw();
//结束批量绘制,并执行指定区域内未完成的绘制任务 voidEndBatchDraw(intleft,inttop,intright,intbottom); 参数:
left指定区域的左部x坐标。 top指定区域的上部y坐标。 right指定区域的右部x坐标。 bottom指定区域的下部y坐标。 请参见BeginBatchDraw的示例。 2.7.4FlushBatchDraw
这个函数用于执行未完成的绘制任务。 //执行未完成的绘制任务 voidFlushBatchDraw();
//执行指定区域内未完成的绘制任务
voidFlushBatchDraw(intleft,inttop,intright,intbottom); 参数:
left指定区域的左部x坐标。 top指定区域的上部y坐标。 right指定区域的右部x坐标。 bottom指定区域的下部y坐标。 示例:
请参见BeginBatchDraw的示例。