小虾米冲冲冲 2019-08-01 16:33 采纳率: 0%
浏览 559

opencv窗口嵌入mfc图片控件后,鼠标滚轮事件无法响应,其他如左键点击事件却可以?

我已经把“view”窗口嵌入到mfc控件中(如下图代码),打算用opencv的鼠标事件来进行操作,然而我在用setMouseCallback("view", on_mouse, NULL)调用函数on_mouse时,on_mouse函数里的鼠标滚轮事件完全不响应,其他却可以响应,请问是什么原因??

// TODO: 在此添加额外的初始化代码
    CWnd  *pWnd1 = GetDlgItem(IDC_abc);//CWnd是MFC窗口类的基类,提供了微软基础类库中所有窗口类的基本功能。
    pWnd1->GetClientRect(&rect1);//GetClientRect为获得控件相自身的坐标大小
    namedWindow("view", WINDOW_AUTOSIZE);//设置窗口名
    HWND hWndl = (HWND)cvGetWindowHandle("view");//hWnd 表示窗口句柄,获取窗口句柄
    HWND hParent1 = ::GetParent(hWndl);//GetParent函数一个指定子窗口的父窗口句柄
    ::SetParent(hWndl, GetDlgItem(IDC_abc)->m_hWnd);
    ::ShowWindow(hParent1, SW_HIDE);//ShowWindow指定窗口中显示

按钮函数:

void CmouseDlg::OnBnClickedButton3()
{
int NewHeight = rect1.bottom;
    int NewWidth = rect1.right;


    cv::Size NewSize(NewWidth, NewHeight);

    cv::Mat cvImgScaled(NewSize, CV_8UC3);

    resize(cvImg, cvImgScaled, NewSize);

    cvImgScaled.copyTo(img);  //图片接口
    cvImgScaled.copyTo(tmp);  //临时变量
    namedWindow("view");//定义一个img窗口  
    setMouseCallback("view", on_mouse, NULL);//调用回调函数  

    imshow("view", cvImgScaled);

}
  • 写回答

2条回答 默认 最新

  • To Be A Hero 2022-03-07 10:47
    关注

    我最近也遇到这个问题,滚轮事件响应在c# 界面上,其他事件都是在opencv 上;采用的方法是,在c# 中增加滚轮事件,然后在滚轮事件中写函数调用opencv 的窗体缩放,但感觉这样不好,不知道你有没有更好的方法解决了这个问题?

    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 CSS实现渐隐虚线框
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容