如何解决Onmouse 回调错误:指向成员的指针对托管类无效
我想显示我屏幕的像素值。该代码在普通 C++ 中运行良好,但在使用 Windows 形式的 C++/CLR 中,我在使用 onMouse 回调时遇到此错误: 指向成员的指针对托管类无效。
void onMouse(int event,int xx,int yy,int f,void*)
{
char window_name[20] = "Pixel Value Demo";
HWND hwndDesktop = GetDesktopWindow();
cv::Mat src = hwnd2mat(hwndDesktop);
cv::Mat image = src.clone();
int BB = image.data[image.channels()*(image.cols*yy + xx) + 0];
int GG = image.data[image.channels()*(image.cols*yy + xx) + 1];
int RR = image.data[image.channels()*(image.cols*yy + xx) + 2];
char name[30];
sprintf(name,"R=%d",RR);
putText(image,name,cv::Point(10,130),cv::FONT_HERSHEY_SIMPLEX,.7,cv::Scalar(0,255),2,8,false);
sprintf(name,"G=%d",GG);
putText(image,170),"B=%d",BB);
putText(image,210),"X=%d",xx);
putText(image,300),"Y=%d",yy);
putText(image,340),false);
imshow(window_name,image);
}
错误是针对 onMouse 回调线:
private: bool MyProcedure(System::ComponentModel::BackgroundWorker ^worker,System::ComponentModel::DoWorkEventArgs^ e)
{
char window_name[20] = "Pixel Value Demo";
HWND hwndDesktop = GetDesktopWindow();
cv::Mat src = hwnd2mat(hwndDesktop);
//cv::namedWindow(window_name,cv::WINDOW_NORMAL);
cv::namedWindow(window_name,cv::WINDOW_AUTOSIZE);
imshow(window_name,src);
cv::setMouseCallback(window_name,onMouse,0);
cv::waitKey(0);
//...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。