halconC++类:HDevWindowStack
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程序中導(dǎo)出的c++程序(例如dev_set_window, dev_open_window, dev_close_window…)
此類包含6個(gè)靜態(tài)方法:
-
static void Push(const HTuple &win_handle); 眾所周知,要想對(duì)某一窗口操作,必須知道窗口的句柄(可能這里說的太絕對(duì),duilib除外),那么halcon采用了前者的思想,它底層就維護(hù)了這樣一個(gè)窗口句柄,當(dāng)然圖形顯示的句柄可能不止一個(gè),所以這里的參數(shù)使用HTuple,這個(gè)結(jié)構(gòu)就像一個(gè)水桶結(jié)構(gòu)一樣,可以裝其他不同類型的數(shù)據(jù)結(jié)構(gòu)。HTuple是HALCON跨平臺(tái)的基礎(chǔ)。如果沒有HTuple,halcon什么也做不到!言歸正傳,此方法就是將此句柄下發(fā)給halcon,halcon將此句柄保存起來,以后便可對(duì)此句柄所指的窗口進(jìn)行任何操作,包括銷毀這個(gè)窗口!
-
static HTuple Pop(); 這個(gè)方法就是銷毀這個(gè)句柄和句柄所指的窗口了,沒什么好說的,如何銷毀的,這里我只能猜一下:halcon底層維護(hù)了一個(gè)句柄隊(duì)列,每Push一個(gè)句柄,在隊(duì)列中添加一個(gè)句柄,相反每Pop一次,銷毀這個(gè)句柄所指向的窗口,正如文中開始的兩句話,首先判斷窗口是否打開,如果打開了,就調(diào)用此Pop方法,銷毀窗口,在后文中將重新打開窗口!
-
static HTuple GetActive(); 此方法就是從halcon的句柄隊(duì)列中獲取一個(gè)處于激活狀態(tài)的窗口句柄,用于繪圖操作,比如顯示圖像:read_image(),再調(diào)disp_obj(),當(dāng)然參數(shù)是這里獲取的窗口句柄
-
static void SetActive(const HTuple &win_handle); 功如其名,就是將某一個(gè)句柄所指的窗口處于激活狀態(tài),這個(gè)我在halcon中暫時(shí)沒有用到。
-
static bool IsOpen(); 判斷某一窗口是否打開,文章開頭有使用,如果打開了,則關(guān)閉
-
static void CloseAll(); 關(guān)閉所有窗口,遍歷底層的句柄隊(duì)列,一一關(guān)閉并銷毀
總結(jié)
以上是生活随笔為你收集整理的halconC++类:HDevWindowStack的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大学python期末考试突击怎么办_Py
- 下一篇: C++对单向链表进行排序