MFC下使用cvSetMouseCallback
来源:互联网 发布:小学教师资格考试软件 编辑:程序博客网 时间:2024/06/05 00:44
cvSetMouseCallback( "CamShiftDemo", &COpencvUIDlgDlg::on_mouse); // 设置鼠标回调函数void COpencvUIDlgDlg::on_mouse( int event, int x, int y, int flags,void *NotUsed)//该函数用于选择跟踪目标{//……}
MFC下使用cvSetMouseCallback()报下面的错误:
error C2664: “cvSetMouseCallback”: 不能将参数 2 从“void (__thiscall ::* )(int,int,int,int,void *)”转换为“CvMouseCallback
原因:callback 不支持类成员回调,只能回调全局函数
解决方案:把回调函数on_mouse声明成静态函数:
static void on_mouse(int event, int x, int y, int flags, void *param);
但是这又会带来另一个问题,由于静态函数只能访问静态成员,所以要做以下处理:
(来自http://blog.csdn.net/chenhezhuyan/article/details/8042962)
方法一:把需要使用的非静态成员也声明成静态
方法二:如下面例子
void CMyDlg::on_mouse( int event, int x, int y, int flags, void* param ){ CMyDlg* temp= (CMyDlg*) param; //这句话很关键,通过on_mouse的最后一个参数传递CMyDlg的对象指针,注意CMyDlg//是你工程中的窗口名,要改成你的类名 temp->chek_cut_state=1;// 通过temp指针访问非静态成员,chek_cut_state是我在CMyDlg类中跟on_mouse//声明义的非静态变量。同样,访问其他成员都要在前面加上 temp-> //··········}
- MFC下使用cvSetMouseCallback
- MFC下使用cvSetMouseCallback()的小结
- MFC下使用cvSetMouseCallback()的小结
- 2014年4月10日 MFC下使用cvSetMouseCallback()
- cvSetMouseCallback使用
- MFC中使用cvSetMouseCallback对图片进行裁剪
- cvSetMouseCallback( "img", on_mouse, NULL);on_mouse回调函数在MFC中的使用
- OpenCV中响应鼠标信息cvSetMouseCallback函数的使用
- Qt中使用opencv中得cvSetMouseCallback回调函数
- MFC使用教程(下)
- mfc下定时器使用
- MFC 下使用COM
- cvSetMouseCallback函数
- CvSetMouseCallback函数
- cvSetMouseCallback函数
- MFC:MFC下使用__argc,__argv
- MFC下使用 TAB_CONTROL控件
- MFC 下使用ACE 注意
- 设置页面禁用缓存
- Storm源码浅析之topology的提交
- javascript 事件冒泡
- 我眼中的工程师文化
- Microsoft Enterprise Library: Exception Handle 模块
- MFC下使用cvSetMouseCallback
- 向量几何在游戏编程中的使用3
- 03_Action
- 技术(3)—要求(或禁止)对象产生于heap之中
- 从Select语句看Oracle查询原理
- sql server 练习题
- C库函数中字符串处理函数集合
- 向量几何在游戏编程中的使用4
- 数据库系统原理教程 第一章 绪论 习题解答