Halcon18MFC混合编程之二——打开两幅图_MFC布局_

时间:2024-04-03 16:26:40

混合编程都是引用/参考:http://blog.sina.com.cn/s/blog_812e326f010117x4.html

 

在系列一中,窗口只在读取图像的时候打开。今天我们要在读取图像之前打开两个窗口,一个用于显示原图,一个用于显示处理后的效果图。如下图所示:

Halcon18MFC混合编程之二——打开两幅图_MFC布局_

 

要完成这个任务,我们需要知道确定两方面内容:第一,什么时候打开窗口;第二,如何确定窗口的位置。

        首先来看第一个问题,要想在读取图像之前打开窗口,那么最好在对话框初始化的时候打开窗口。在对话框初始化函数 中添加如下代码:Halcon/C++中打开窗口的函数如下:

    open_window(10,10,320,300,lWWindowID,"visible","",&WindowHandle);

前面四个参数(左上点行列坐标,窗口的宽和高)定义了窗口的位置,第五个参数为指定窗口的父窗口,如果为“0”则父窗口为操作系统窗口。最后一个参数为打开窗口的句柄。

 

        第二个问题,使用图形控件,通过获取图形控件的位置和大小来确定打开的窗口的位置很大小。代码如下:

 

    GetDlgItem(IDC_DISPIMAGE)->GetClientRect(&rect);//IDC_DISPIMAGE为第一个图像控件的ID号,第二个窗口类似处理。
    hWnd = GetDlgItem(IDC_DISPIMAGE)->m_hWnd;
    open_window(rect.left, rect.top, rect.Width(), rect.Height(), (Hlong)hWnd, "visible"""&WindowHandle);

 

最终的显示效果如下图:

 

Halcon18MFC混合编程之二——打开两幅图_MFC布局_