halcon匯出類---HDevWindowStack詳解

來源:互聯網
上載者:User

標籤:style   blog   color   使用   檔案   資料   

  在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
 


  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.