开启左侧

用mfc和halcon打开图片,内存似乎报错溢出,哪儿错了??

[复制链接]
available 发表于 2019-1-2 16:21:25 | 显示全部楼层 |阅读模式
在mfc中点击显示图片按钮,将图片显示在picture control上,报错似乎内存溢出,图片不能显示,哪儿错了呢???
TIM截图20190102161618.png TIM截图20190102161734.png TIM截图20190102161755.png TIM截图20190102161818.png
代码如下////////////////////////
void CMCFLearningCaseDlg::OnBnClickedPictureButton()
{
        // TODO: 在此添加控件通知处理程序代码
        //得到图片文件路径
        TCHAR szFilters[] = _T("图片文件(.bmp .png .jpg)/.bmp;.png;*jpg/All Files (.)/.*||");
        CFileDialog fileDlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters,NULL);
        CString pathName;
        HImage Image;
        HTuple Width, Height;
        if (fileDlg.DoModal() == IDOK)
        {
                pathName = fileDlg.GetPathName();
        }
        //pop up pathname
        MessageBox(pathName);

        //change PathName Type
        int len = WideCharToMultiByte(CP_ACP, 0, pathName, -1, NULL, 0, NULL, NULL);
        char *ptxtTemp = new char[len + 1];
        WideCharToMultiByte(CP_ACP, 0, pathName, -1, ptxtTemp, len, NULL, NULL);

        //读取图片
        Image.ReadImage(ptxtTemp);
        //得到图片尺寸
        Image.GetImageSize(&Width, &Height);
        //窗口句柄获取
        HWND hImgWnd = GetDlgItem(IDC_PICTURE_STATIC)->m_hWnd;
        CRect rtWindow;
        GetDlgItem(IDC_PICTURE_STATIC)->GetClientRect(&rtWindow);
        HWindow m_htWindow;
        //打开一个窗口并显示图片
        m_htWindow.OpenWindow(rtWindow.left, rtWindow.top, rtWindow.Height(), rtWindow.Width(), (Hlong)hImgWnd, "visible", "");
        m_htWindow.SetPart(0, 0, Width.I(), Height.I());
        Image.DispImage(m_htWindow);
}



绝地武士 发表于 2019-1-2 17:19:29 | 显示全部楼层
你用的哪个版本的?是18.11?
 楼主| available 发表于 2019-1-2 17:39:09 | 显示全部楼层
绝地武士 发表于 2019-1-2 17:19
你用的哪个版本的?是18.11?

对的,最新版本
 楼主| available 发表于 2019-1-2 18:55:41 | 显示全部楼层
TIM截图20190102185411.png
这个是怎么错了呢,把Width 和Height赋初值NULL也是同样报错。
是文件路径有错吗?
mediation 发表于 2019-1-3 13:02:24 | 显示全部楼层
本帖最后由 mediation 于 2019-1-3 13:03 编辑

m_htWindow.OpenWindow(rtWindow.left, rtWindow.top, rtWindow.Height(), rtWindow.Width(), (Hlong)hImgWnd, "visible", "");
好像这里width() 和 Height() 位置交换了,不知道是不是引起异常的原因之一
还有一个Openwindow最好放在初始化函数里;
不能每次点击就打开一个窗口,点多了就内存泄漏了
 楼主| available 发表于 2019-1-5 09:53:12 | 显示全部楼层
最后不用HImage类,而该用导出文件中的HObject类,仿照导出文件写解决了问题,然而依旧不清楚上述代码有什么问题。
moonwell0106 发表于 2019-1-5 16:42:00 | 显示全部楼层
文件路径不要出现中文字符
jesean 发表于 2020-3-17 22:18:00 | 显示全部楼层
楼主你好 请问你这个问题解决了么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表