halcon导出类---HDevWindowStack详解
来源:互联网 发布:linux telnet端口 编辑:程序博客网 时间:2024/06/09 22:42
原文链接:http://www.cnblogs.com/xiejiulong/p/3818839.html
在HDevelop中编写好的程序在导出时,Halcon会帮我们转换成我们需要的语言,比如C++。例:HDevelop中有如下语句需要导出:
dev_close_window()
Halcon导出成C++语言就成了如下语句:
if (HDevWindowStack::IsOpen())
close_window(HDevWindowStack::Pop());
了解MFC的应该不难理解,这两句在底层做了什么!下面让我来讲解一下,呵呵
首先来看看HDevWindowStack这个类,其实这个类很简单,来看下头文件:
class LIntExport HDevWindowStack{public: static void Push(const HTuple &win_handle); static HTuple Pop(); // no window open -> return empty tuple static HTuple GetActive(); // no window open -> return -1 static void SetActive(const HTuple &win_handle); // no window open -> done static bool IsOpen(); static void CloseAll();};
只有6个静态方法,下面一一讲解此6个方法:
static void Push(const HTuple &win_handle); 众所周知,要想对某一窗口操作,必须知道窗口的句柄(可能这里说的太绝对,duilib除外),那么halcon采用了前者的思想,它底层就维护了这样一个窗口句柄,当然图形显示的句柄可能不止一个,所以这里的参数使用HTuple,这个结构就像一个水桶结构一样,可以装其他不同类型的数据结构。HTuple是HALCON跨平台的基础。如果没有HTuple,halcon什么也做不到!言归正传,此方法就是将此句柄下发给halcon,halcon将此句柄保存起来,以后便可对此句柄所指的窗口进行任何操作,包括销毁这个窗口!
static HTuple Pop(); 这个方法就是销毁这个句柄和句柄所指的窗口了,没什么好说的,如何销毁的,这里我只能猜一下:halcon底层维护了一个句柄队列,每Push一个句柄,在队列中添加一个句柄,相反每Pop一次,销毁这个句柄所指向的窗口,正如文中开始的两句话,首先判断窗口是否打开,如果打开了,就调用此Pop方法,销毁窗口,在后文中将重新打开窗口!
static HTuple GetActive(): 此方法就是从halcon的句柄队列中获取一个处于激活状态的窗口句柄,用于绘图操作,比如显示图像:read_image(),再调disp_obj(),当然参数是这里获取的窗口句柄
static void SetActive(const HTuple &win_handle):功如其名,就是将某一个句柄所指的窗口处于激活状态,这个我在halcon中暂时没有用到。
static bool IsOpen():判断某一窗口是否打开,文章开头有使用,如果打开了,则关闭
static void CloseAll():关闭所有窗口,遍历底层的句柄队列,一一关闭并销毁
阅读全文
0 0
- halcon导出类---HDevWindowStack详解
- halcon导出类---HDevWindowStack详解
- halcon导出类---HDevWindowStack详解
- C#中调用Halcon导出类
- halcon语句详解
- halcon函数详解
- Halcon导出的cpp, VC++环境配置
- Halcon 模板匹配参数详解
- HALCON学习之Features详解
- HALCON
- halcon : ::
- HALCON
- Halcon PDF文档(hdevelop_users_guide)学习总结之六——Halcon如何导出C++代码
- Halcon学习笔记----region_to_bin算子详解
- HALCON学习之select_shape的Feature详解
- HALCON里几种数据类型详解
- HALCON初步:HDevelop导出C++程序到VS 2013
- 将halcon中代码导出到vs2013执行
- ES6--Symbol数据类型
- ArrayList源码研究
- codeforces Gym
- 传统BIOS安装Ubuntu双系统
- (二十四)自定义动画框架
- halcon导出类---HDevWindowStack详解
- Java Web 后续(三)
- java中equals方法的用法以及==的用法(转)
- tarjan算法求强连通分量详解(避免误区)
- 数据库连接池
- LintCode刷题——背包问题
- Android开发之Intent的使用
- Zookeeper和Curator-Framework实践系列之: 配置管理
- UVA11178 计算几何入门题