1、在xxxxxDlg.h头文件中找到DECLARE_MESSAGE_MAP(),在此后面定义三个成员变量
public:
Hobject m_Image; //图像
HTuple m_hWindowHandle; //显示图形窗口句柄
Hobject m_objDisp; //用于显示图形的对象
2、在xxxxxDlg的初始化函数OnInitDialog()后面添加如下
//picture控件初始化*****************************************************
CRect tmpRect;
//获取picture控件的矩形区域,IDC_VIEW1是picture控件的ID号
GetDlgItem(IDC_VIEW1)->GetClientRect(&tmpRect);
//把picture控件和halcon关联,返回显示图形的窗口句柄
//获取的picture控件的窗口句柄后,要强制转化为Hlong型数据
open_window(0,0,tmpRect.Width(),tmpRect.Height(),(Hlong)(GetDlgItem(IDC_VIEW1)->GetSafeHwnd()),"visible","",&m_hWindowHandle);
set_draw(m_hWindowHandle,"margin");
set_colored(m_hWindowHandle,12);
set_line_width(m_hWindowHandle,2);
//设置halcon内部处理的图像的宽度和高度
set_system("tsp_width",3000);
set_system("tsp_height",3000);
//picture控件初始化结束*************************************************
下图是关联起来的形式:
3、button控件打开图片的代码
//图像宽、高
HTuple Width,Height;
//弹出打开图像文件的对话框
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"*.bmp,*.jpg,*.jpeg|*.bmp;*.jpg;*.jpeg||");
//加载文件成功,则显示文件
if (dlg.DoModal()==IDOK)
{
//复位显示图形变量
if (m_objDisp.Id()!=H_EMPTY_REGION)
{
m_objDisp.Reset();
}
//读取图像,把图像存储在m_Image中
read_image(&m_Image,dlg.GetPathName());
//获取图像大小
get_image_size(m_Image,&Width,&Height);
//显示全图
set_part(m_hWindowHandle,0,0,Height-1,Width-1);
//vc中要显示任何图形,一定要调用disp_obj函数来实现
disp_obj(m_Image,m_hWindowHandle);
}