emWin 2天速成实例教程002_多个页面窗口切换
備注:(1)打開工程目錄下的"Exe\GUISimulationDebug.exe"即可看到效果。(2)看完教程000~005就基本會用emWin做項目,其他章節可以需要時再參考。
? 用emWin做界面,可以簡單理解為每個C文件即對應一個頁面,如果要設計多個頁面的界面怎么辦?生成多個界面C文件并在回調函數的操作觸發消息中用隱藏/顯示頁面函數:WM_HideWindow()和WM_ShowWindow()實現界面切換程序即可。
? 當界面有多個頁面需要切換顯示時,有兩種方式可以實現:(1)隱藏/顯示方式:程序啟動時創建所有頁面窗口,程序運行時隱藏當前無需顯示的頁面,同時顯示當前需要顯示的頁面;(2)刪除/創建方式:程序啟動時創建開機需要顯示的頁面窗口,程序運行時刪除當前無需顯示的頁面,同時創建當前需要顯示的頁面。
? 這兩種方式的根本區別是:第(1)種方式由于所有頁面都是真實存在的,因此占用更多的內存。對于界面簡單的應用,或者CPU有足夠RAM的情況下,建議使用隱藏/顯示方式,因為刪除/創建方式涉及到動態內存的申請和釋放,處理不當或程序不嚴謹容易出現內存錯誤造成死機現象,而且刪除/創建方式由于切換頁面時需要創建窗口,因此切換頁面時速度比隱藏/顯示方式更慢些。
? 這里只說明通過隱藏/顯示的方式做頁面窗口切換,使用到emwin兩個窗口管理API函數:
? void WM_HideWindow(WM_HWIN hWin);? //隱藏窗口函數,hWin是窗口的句柄
? void WM_ShowWindow(WM_HWIN hWin);? //顯示窗口函數,hWin是窗口的句柄
......
case WM_NOTIFY_PARENT:?//操作觸發消息處理(程序會跑到這里),比如點擊按鍵、點擊編輯框(任何的操作)等等......
? Id = WM_GetId(pMsg->hWinSrc);
? NCode = pMsg->Data.v;
? switch(Id) {
? case ID_BUTTON_1://ID為ID_BUTTON_1的按鍵被點擊
? ? switch(NCode) {
? ? ? caseWM_NOTIFICATION_CLICKED:?//按下動作消息
? ? ? ? break;
? ? ? caseWM_NOTIFICATION_RELEASED://彈起動作消息
? ? ? ? WM_HideWindow(hPage[0]);?//隱藏Page0
? ? ? ? WM_ShowWindow(hPage[1]);//顯示Page1
? ? ? ? break;
? ? ? }
? ? ? break;
? ? }
? ? break;
......
源碼/軟件下載
轉載于:https://blog.51cto.com/neqee/2084567
總結
以上是生活随笔為你收集整理的emWin 2天速成实例教程002_多个页面窗口切换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Form表单中的button导致页面刷新
- 下一篇: 程序员的能力矩阵表【转载自】