opencv绑定MFC显示图片,MFC的鼠标响应在opencv图片上失效

6 篇文章 0 订阅

opencv通过如下方式显示图片到MFC控件上

// 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指定窗口中显示

可以正常显示,但是对于鼠标时间的相应以及快捷键的相应会出现问题。

网上给出的解决方案 基本与该方案雷同

原文作者:aircraft

出了很多冲突异常事件导致鼠标操作没有响应

当opencv窗口与mfc控件绑定时,可以认为opencv绑定区域覆盖在mfc 控件上,此时mfc本身的鼠标响应在此区域失效,只能调用opencv的鼠标响应事件。

而当你调用opencv的鼠标滚轮事件时候又会没有反应,此时是因为mfc的鼠标滚轮事件优先级别更好 ,只能在这里用mfc的鼠标滚轮响应事件。

不想出现上面的问题,解决办法有:

1:直接使用Mfc的图像处理类不用opencv

2:或者使用opencv显示时不将窗口绑定到mfc控件上,而是转换图像类格式写入

3:或者就像我上面说的,使用opencv的鼠标点击事件,使用Mfc的鼠标滚轮事件

但是我觉得修改opencv源码也可以实现。

经过尝试,始终无法屏蔽opencv的事件,退回方法3!

有想法大家评论区讨论。

追更一下,注册opencv的事件无响应,放弃了用opencv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值