emWin 2天速成執行個體教程002_多個頁面視窗切換

來源:互聯網
上載者:User

標籤:emwin   表單   視窗   頁面   隱藏   

備忘:(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;
......



源碼/軟體下載

emWin 2天速成執行個體教程002_多個頁面視窗切換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.