使用halcon将图片读取,并显示在picture control上后再次读取第二张图片时仍然显示第一张图片
void Ct5Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
CString path;
CString filter;
filter = "Picture Files (*.bmp *.jpg)|*bmp;;*jpg||";
CFileDialog readfileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, filter);//构造文件对话框对象
if (IDOK == readfileDlg.DoModal()) //当点击确定按钮时候,会记录文件路径
{
path = readfileDlg.GetPathName();
}
else
{
return;
}
//通过readfileDlg.GetPathName()获得的文件路径是CString类型,而Halcon中的read_image需要的类型为HTuple涉及到数据转换
CStringA StrTemp(path);
hv_picfile = (LPSTR)StrTemp.GetBuffer();
ReadImage(&ho_Image, hv_picfile); //读取文件
HWND hwnd1;
CRect rect;
GetDlgItem(IDC_PIC)->GetWindowRect(&rect); //获取控件尺寸
hwnd1 = GetDlgItem(IDC_PIC)->m_hWnd;
//HLONG lWWindowID=(HLONG)m_hWnd;
LONG lWindowID = (LONG)hwnd1;
OpenWindow(0, 0, rect.Width(), rect.Height(), lWindowID, "", "", &hv_WindowHandle);
HDevWindowStack::Push(hv_WindowHandle);
if (HDevWindowStack::IsOpen())
DispObj(ho_Image, HDevWindowStack::GetActive());
}