error C2664: 'cvSetMouseCallback' : cannot convert parameter 2 from 'void (__cdecl *)(int,int,int,int)' to 'CvMouseCallback' 的解决

    正如上文中提到的,在mfc中,cvSetMouseCallback()函数总是会提示如标题的错误提示,在查阅了网页和参考书,解决方法,如下:

    在头文件中,将要调用的函数:on_mouse声明为静态成员函数

 

    static void on_mouse(int event, int x, int y, int flags, void *param);

 

   在on_mouse()函数中添加如下代码:

   如果在on_mouse()中调用其他方法,需用定义的temp指针来调用

  CMotionTraceDlg *temp = (CMotionTraceDlg*)param; // temp->MessageBox("on_mouse", MB_OK);

自此,程序可以顺利运行

你可能感兴趣的:(MFC+OpenCV)