问题描述
我一直在使用来自此github链接的放大镜代码:Magnify
我正在尝试设置 MagImageScaling 回调,但我能够通过此回调获取位图。
一旦设置了 MagImageScaling 回调,并且如果我尝试将窗口移到桌面的右侧。该程序会引发如下异常:
在Magnify10.exe中的0x00007FFDA8724452(msvcrt.dll)处引发了异常: 0xC0000005:访问冲突读取位置0x000001749E708FA4。
我没有发布完整的代码,因为它太大了。
回调定义
BOOL MagImageScaling(HWND hwnd,void* srcdata,MAGIMAGEHEADER srcheader,void* destdata,MAGIMAGEHEADER destheader,RECT unclipped,RECT clipped,HRGN dirty)
{
//Here i was able to receive the bitmap through srcdata
return TRUE;
}
这是我设置回调的方式:
if (!MagSetimageScalingCallback(magActive->GetHandle(),(MagImageScalingCallback)MagImageScaling))
{
return FALSE;
}
上图显示了实际问题:
黄色框是宿主窗口。
绿色框是放大镜窗口,是宿主窗口的子窗口。
红色框是桌面矩形。
蓝线是随机边界。
当窗口越过蓝色边界时,会导致异常。
我认为,当移动窗口时,放大镜窗口会自动调整大小并尝试越过“蓝色边界”和“桌面”边界,从而导致此问题。
所以我认为,如果我们能够确定MagnifyWindow何时触摸桌面边界并停止Mangnifier窗口的移动,那么我们也许可以将其停止。
那么有什么办法可以做到这一点?
以下是该项目的完整代码,可重现此问题:
Magnify Bug Project
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)