3_3鼠标操作
鼠标操作采用回调函数的方式进行
设置鼠标操作回调函数:setMouseCallback
void setMouseCallback(const sting& winname,
MouseCallback onMouse,
void* userdata)
参数1 winname:窗口名字
参数2 onMouse:回调函数指针
参数3 userdata:供用户传递参数
回调函数类型
typedef void (*MouseCallback)(int event,
int x,
int y,
int flags,
void* param)
参数1 event:
enum
{
EVENT_MOUSEMOVE =0,
EVENT_LBUTTONDOWN =1,
EVENT_RBUTTONDOWN =2,
EVENT_MBUTTONDOWN =3,
EVENT_LBUTTONUP =4,
EVENT_RBUTTONUP =5,
EVENT_MBUTTONUP =6,
EVENT_LBUTTONDBLCLK =7,
EVENT_RBUTTONDBLCLK =8,
EVENT_MBUTTONDBLCLK =9
};
参数2 x:鼠标在图像坐标系(注意不是窗口坐标系)的坐标
参数3 y:鼠标在图像坐标系(注意不是窗口坐标系)的坐标
参数4 flags:
enum
{
EVENT_FLAG_LBUTTON =1,
EVENT_FLAG_RBUTTON =2,
EVENT_FLAG_MBUTTON =4,
EVENT_FLAG_CTRLKEY =8,
EVENT_FLAG_SHIFTKEY =16,
EVENT_FLAG_ALTKEY =32
};
例:
void onMouseHandle(int event, int x, int y, int flag, void* param)
{
...
switch(event)
{
case:EVENT_MOUSEMOVE:
...
break;
...
}
}
int main()
{
...
setMousCallback("win",
on_MouseHandle,
(void*)&srcImage)
...
鼠标操作采用回调函数的方式进行
设置鼠标操作回调函数:setMouseCallback
void setMouseCallback(const sting& winname,
MouseCallback onMouse,
void* userdata)
参数1 winname:窗口名字
参数2 onMouse:回调函数指针
参数3 userdata:供用户传递参数
回调函数类型
typedef void (*MouseCallback)(int event,
int x,
int y,
int flags,
void* param)
参数1 event:
enum
{
EVENT_MOUSEMOVE =0,
EVENT_LBUTTONDOWN =1,
EVENT_RBUTTONDOWN =2,
EVENT_MBUTTONDOWN =3,
EVENT_LBUTTONUP =4,
EVENT_RBUTTONUP =5,
EVENT_MBUTTONUP =6,
EVENT_LBUTTONDBLCLK =7,
EVENT_RBUTTONDBLCLK =8,
EVENT_MBUTTONDBLCLK =9
};
参数2 x:鼠标在图像坐标系(注意不是窗口坐标系)的坐标
参数3 y:鼠标在图像坐标系(注意不是窗口坐标系)的坐标
参数4 flags:
enum
{
EVENT_FLAG_LBUTTON =1,
EVENT_FLAG_RBUTTON =2,
EVENT_FLAG_MBUTTON =4,
EVENT_FLAG_CTRLKEY =8,
EVENT_FLAG_SHIFTKEY =16,
EVENT_FLAG_ALTKEY =32
};
例:
void onMouseHandle(int event, int x, int y, int flag, void* param)
{
...
switch(event)
{
case:EVENT_MOUSEMOVE:
...
break;
...
}
}
int main()
{
...
setMousCallback("win",
on_MouseHandle,
(void*)&srcImage)
...
}