STM32之emwin多介面
當介面有多個頁面需要切換顯示時,有兩種方式可以實現:
(1)隱藏/顯示方式:程式啟動時建立所有頁面視窗,程式執行時隱藏當前無需顯示的頁面,同時顯示當前需要顯示的頁面;
(2)刪除/建立方式:程式啟動時建立開機需要顯示的頁面視窗,程式執行時刪除當前無需顯示的頁面,同時建立當前需要顯示的頁面。
這兩種方式的根本區別是:
第(1)種方式由於所有頁面都是真實存在的,因此佔用更多的記憶體。對於介面簡單的應用,或者CPU有足夠RAM的情況下,建議使用隱藏/顯示方式,因為刪除/建立方式涉及到動態記憶體的申請和釋放,處理不當或程式不嚴謹容易出現記憶體錯誤造成宕機現象,而且刪除/建立方式由於切換頁面時需要建立視窗,因此切換頁面時速度比隱藏/顯示方式更慢些。
這裡只說明通過隱藏/顯示的方式做頁面視窗切換,使用到emwin兩個視窗管理API函式:
void WM_HideWindow(WM_HWIN hWin); //隱藏視窗函式,hWin是視窗的控制代碼
void WM_ShowWindow(WM_HWIN hWin); //顯示視窗函式,hWin是視窗的控制代碼
視窗:
emWin的每個介面都需要一個Framewin/Window視窗控制元件作為父窗體,就好像Framewin/Window是一個窗體框架,所有控制元件都放置在這個框架當中,組成父窗體和子控制元件的連帶關係,可以通過父窗體找到子控制元件,也可以通過子控制元件找到它的父窗體,Framewin和Window在外觀上是有區別的。
Framewin視窗控制元件實際上包含2個視窗:主視窗和子視窗,子視窗稱為Client視窗,在處理回撥函式時理解主視窗和Client視窗的概念是很重要的:兩個視窗可以對應兩個不同的回撥函式;當建立例如按鍵、編輯框等控制元件時,這些控制元件是作為Client視窗的子控制元件包含在Client視窗中的,因此這些控制元件的父視窗是Client視窗而非主視窗。
移植GUI檔案:
生成GUI.c檔案後,新增進工程。
去掉上面函式的宣告。新建h檔案,把函式宣告放在那裡。
在GUI.c檔案新增h檔案
標頭檔案中