halcon导出类---HDevWindowStack详解
在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(); 关闭所有窗口,遍历底层的句柄队列,一一关闭并销毁 added by xiejl
halcon导出类---HDevWindowStack详解的更多相关文章
- java实现excel的导入导出(poi详解)[转]
java实现excel的导入导出(poi详解) 博客分类: java技术 excel导出poijava 经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个 ...
- poi导出word表格详解 超详细了
转:非常感谢原作者 poi导出word表格详解 2018年07月20日 10:41:33 Z丶royAl 阅读数:36138 一.效果如下 二.js代码 function export_word( ...
- 在java poi导入Excel通用工具类示例详解
转: 在java poi导入Excel通用工具类示例详解 更新时间:2017年09月10日 14:21:36 作者:daochuwenziyao 我要评论 这篇文章主要给大家介绍了关于在j ...
- 跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量
跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量 * This example program demonstrates the basic usage of a fuzz ...
- 跟我学机器视觉-HALCON学习例程中文详解-测量圆环脚宽间距
跟我学机器视觉-HALCON学习例程中文详解-测量圆环脚宽间距 This example program demonstrates the basic usage of a circular meas ...
- 跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量
跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量 This example program demonstrates the basic usage of a measure object. ...
- 跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码
跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码 第一步:插入QQ摄像头,安装好驱动(有的可能免驱动) 第二步:打开HDevelop,点击助手-打开新的Image Acquisitio ...
- 跟我学机器视觉-HALCON学习例程中文详解-IC引脚测量
跟我学机器视觉-HALCON学习例程中文详解-IC引脚测量 Lead Measurement: Example for the application of the measure object in ...
- [转]mysqldump备份还原和mysqldump导入导出语句大全详解
FROM : http://www.cnblogs.com/zeroone/archive/2010/05/11/1732834.html mysqldump备份还原和mysqldump导入导出语句大 ...
随机推荐
- idea多级目录与单级目录切换
- tomcat修改server.xml的虚拟目录,启动eclipse后清空
修改eclipse中servers的server.xml 参考文章:https://blog.csdn.net/binglong_world/article/details/77604324
- gcc 与g++的区别
原文 http://www.cnblogs.com/wb118115/p/5969775.html 什么是gcc / g++ 首先说明:gcc 和 GCC 是两个不同的东西 GCC:GNU Compi ...
- Sql server 中count() 与 sum() 的区别
一句话概括就是Sum(列) 是求和,把所有列的值进行汇总求和:COUNT(列) 是行数汇总,只要列的值不为Null,就会增加1: 举个例子说明下: --创建临时表结构 CREATE TABLE Tem ...
- git简易指南
目录 工作流 初始化仓库 查看分支 添加和提交 推送改动 分支 重命名分支 更新与合并 替换本地改动 回滚 远程仓库 有用的贴士 GIT vs SVN 工作流 你的本地仓库由 git 维护的三棵&qu ...
- iOS开发支付篇——内购(IAP)详解
1 <em>内购所需要的资料整理总结,史上最完整的,哈哈哈哈哈哈</em> 思维导图 重点总结: 1 2 3 4 5 6 7 8 9 10 11 12 13 1.获取内购列表( ...
- Python开发【模块】:paramiko
一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作 模块安装 C:\Program Files\Python 3.5\Scri ...
- 关于mq的思考
解耦场景 spark 发告警,同过kafka来解耦 削峰场景 日志采集生产环境几百台,当后续数量持续增加时,如果不加消息队列或者内存队列,可能把数据库打死 一个中间件: 为什么用 ->解决什么问 ...
- ActiveMQ 消息存储持久化
ActiveMQ提供了一个插件式的消息存储,类似于消息的多点传播,主要实现了如下几种: AMQ消息存储-基于文件的存储方式,是以前的默认消息存储 KahaDB消息存储-提供了容量的提升和恢复能力,是现 ...
- 动手篇:简单的注册界面与防SQL注入(续)
注册前先判断用户名是否已经存在,通过if (SqlHelper.Exists(strSql))查询判断是否已经存在.没存在则进行一个数据插入数据库操作 string strSql1 = string. ...