C++源码:

// The class HDevWindowStack can be used to emulate the behavior of HDevelop
// graphics windows for HALCON graphics windows. It is primarily intended for
// usage in C++ programs exported from HDevelop programs containing HDevelop
// window operators (e.g. dev_set_window, dev_open_window, dev_close_window...)
class LIntExport HDevWindowStack
{public:  // Push handle for new window (dev_open_window)static void   Push(const HTuple &win_handle);// Pop handle for closed window (dev_close_window)static HTuple Pop();// Get handle for active windowstatic HTuple GetActive();// Set active window (dev_set_window)static void   SetActive(const HTuple &win_handle);// Test if any open window is availablestatic bool   IsOpen();// Close all open windowsstatic void   CloseAll();};

类HDevWindowStack可以用来模拟HALCON图形窗口的HDevelop图形窗口的行为。它主要用于从包含HDevelop窗口操作符的HDevelop程序中导出的c++程序(例如dev_set_window, dev_open_window, dev_close_window…)
此类包含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(); 关闭所有窗口,遍历底层的句柄队列,一一关闭并销毁

halconC++类:HDevWindowStack相关推荐

  1. 自己搜集编写的Delphi 通用函数

    { ********************************************************************** } { Currency Common Functio ...

  2. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  3. MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段

    mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...

  4. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

    使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...

  5. IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成

    在新建类文件的时候自动生成注解,诸如我们常见的那些 作者,创建时间,TODO 等等 将以下格式的代码放在Settings -> File and Code Templates -> Inc ...

  6. javabean实体类与实体类之间的快速转换

    一.Dozer是什么? dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> art ...

  7. 利用dom4j将实体类转换为对应的xml报文

    利用dom4j生成xml报文 目标格式: <?xml version="1.0" encoding="GBK"?><Packet type=& ...

  8. Idea groovy表生成实体类带注释

    Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...

  9. java带参数的方法笔记_具有Java参数的方法的类声明

    类声明可以包含在Java中具有参数的方法.演示此过程的程序如下: 示例class Message { public void messagePrint(String msg) { System.out ...

最新文章

  1. 空间深度学习——ConvLSTM原理及其TensorFlow实现
  2. haproxy+keepalived应用实战
  3. Vim不常见但是很实用的命令技巧
  4. 判断系统是大端还是小段
  5. 60 SD配置-科目分配-分配总帐科目
  6. python 3.5安装pywin32
  7. 拓端tecdat|excel数据分析——贝叶斯分析预测
  8. python期末考试及答案单引号、双引号和三引号_python脚本中单引号’ 双引号“ 三个单引号‘’‘ 三个双引号”“” 差别 及反斜杠的用法...
  9. 现代通信原理思维导图--第五章 模拟调制系统
  10. php全套之七,php程序员工具箱
  11. G-Dezender批量解密
  12. HTTP(超文本传输协议)详细解析
  13. 集五福华为机试python_支付宝集五福,扫一扫用新年送礼好物华为MatePad Pro画的福试试...
  14. 使用mars3d时第二次进行hls视频融合报错
  15. aws没有免费套餐服务数据可用
  16. 关于爱国者***的追踪报道[转]
  17. MapReduce 原理与实践
  18. 电脑重装系统后我的电脑图标怎么添加到桌面上显示
  19. python 携程航班信息查询
  20. 微信小程序云开发-树洞小程序Treehole(评论帖子/发布话题实现)

热门文章

  1. 面试必备!卖萌屋算法工程师思维导图—统计机器学习篇
  2. Spring Boot中使用MongoDB的连接池配置
  3. 我对Spring的理解
  4. 执行Dockerfile构建基础镜像,建立python工作环境
  5. python 异常处理相关说明
  6. IO模型(epoll)--详解-02
  7. java-线程-生产者-消费者
  8. 知道一个数组某个index对应的值 不知道下标的情况下删除该值
  9. python--*args和**kwargs可变参数
  10. tomcat server.xml配置详解