Easyx中鼠标的使用。

1.MOUSEMSG

鼠标结构体.

// 鼠标消息
// 支持如下消息:
WM_MOUSEMOVE 鼠标移动
WM_MOUSEWHEEL 鼠标滚轮拨动
WM_LBUTTONDOWN 左键按下
WM_LBUTTONUP 左键弹起
WM_LBUTTONDBLCLK 左键双击
WM_MBUTTONDOWN 中键按下
WM_MBUTTONUP 中键弹起
WM_MBUTTONDBLCLK 中键双击
WM_RBUTTONDOWN 右键按下
WM_RBUTTONUP 右键弹起
WM_RBUTTONDBLCLK 右键双击
struct MOUSEMSG
{
UINT uMsg; 当前鼠标消息
bool mkCtrl; Ctrl 键是否按下
bool mkShift; Shift 键是否按下
bool mkLButton; 鼠标左键是否按下
bool mkMButton; 鼠标中键是否按下
bool mkRButton; 鼠标右键是否按下
short x; 当前鼠标 x 坐标
short y; 当前鼠标 y 坐标
short wheel; 鼠标滚轮滚动值 (120 的倍数)
};

bool MouseHit(); 检查是否存在鼠标消息
MOUSEMSG GetMouseMsg(); 获取一个鼠标消息。如果没有,就等待
void FlushMouseMsgBuffer(); 清空鼠标消息缓冲区

实例:用鼠标左键实现相应功能。

#undef UNICODE
#include <graphics.h>
#include <conio.h>
#include<stdio.h>
int main()
{
MOUSEMSG m;
// 初始化绘图窗口
initgraph(640, 480);
// 设置背景色为白色
setbkcolor(WHITE);
// 用背景色清空屏幕
cleardevice();
setfillcolor(RED);
fillrectangle(100, 100, 300, 150);
settextstyle(15, 0, "微软黑体");
setbkmode(TRANSPARENT);
outtextxy(150, 120, "Hello,World!");
while (1) {
m = GetMouseMsg();
if (m.x >= 100 && m.x <= 300 && m.y >= 100 && m.y <= 150) {
setlinecolor(BLUE);
rectangle(90, 95, 310, 160);
if (m.uMsg == WM_LBUTTONDOWN) { //如果按下鼠标左键实现相应功能.
closegraph();
printf("HHHHHHHHHHHHHHHH\n");
break;
}
}
else { //当鼠标不在目标位置就覆盖之前的蓝色边框.
setlinecolor(WHITE);
rectangle(90, 95, 310, 160);
}
}
// 按任意键退出
_getch();
closegraph();//关闭窗口
}

Easyx中鼠标的使用。_背景色