色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式用戶圖形接口uC/GUI的簡單分析

          嵌入式用戶圖形接口uC/GUI的簡單分析

          作者: 時間:2016-10-08 來源:網(wǎng)絡(luò) 收藏

          子/父窗口

          子窗口是相對于父窗口定義的窗口。無論何時,只要父窗口移動,則子窗口們都要相應(yīng)移動。子窗口被父窗口完全包含。擁有同一個父窗口的子窗口們互相間稱為兄弟。

          客戶區(qū)

          窗口的客戶區(qū)就是窗口的可用區(qū)。如果窗口包含方框或標(biāo)題欄,則客戶區(qū)就是方框或標(biāo)題欄的內(nèi)部區(qū)域。

          句柄

          當(dāng)一個新的窗口被創(chuàng)建時,WM分配一個唯一的標(biāo)識符,稱為句柄。句柄用在后續(xù)對該窗口操作的所有函數(shù)中,而且可以利用該句柄唯一標(biāo)識該窗口。

          有效窗口/無效窗口

          有效窗口是一個已經(jīng)完全更新,不需要重繪的窗口。不管是完全重繪還是局部重繪。當(dāng)窗口內(nèi)容發(fā)生改變時,WM則標(biāo)識窗口無效。下一次重繪之后(調(diào)用回調(diào)函數(shù)),窗口又變?yōu)橛行А?p>回調(diào)機(jī)制

          uC/GUI提供給窗口和窗口控件的回調(diào)機(jī)制的背后,是一個事件驅(qū)動標(biāo)志。在大多數(shù)的窗口系統(tǒng)中,流控不僅僅時從用戶程序到圖形系統(tǒng),而且還要能夠從用戶程序到圖形系統(tǒng),并且能夠通過用戶程序提供的回調(diào)函數(shù),返回到用戶程序。這個機(jī)制,就稱為回調(diào)機(jī)制。在uC/GUI中,回到機(jī)制用來在窗口管理中出控制窗口的重繪操作,這使得窗口管理的有效性成為可能。

          回調(diào)函數(shù)的使用

          使用回調(diào)函數(shù)建立一個窗口時,必須有一個回調(diào)函數(shù)。所用的回調(diào)函數(shù)必須有如下原型:

          void callback (WM_MESSAGE *pMsg)。 其中pMsg為指向消息的指針。

          回調(diào)函數(shù)執(zhí)行的功能依賴于所接收到的消息。以上原型后一般跟著switch表達(dá)式,表達(dá)式定義不同的case表達(dá)式下不同的信息對應(yīng)的不同行為,至少要有一個重繪函數(shù):WM_PAINT()。如程序清單4.1,建立一個自動更新窗口的回調(diào)函數(shù)

          void WinHandler (WM_MESSAGE * pMsg)

          {

          switch (pMsg->MsgId)

          {

          case: WM_PAINT GUI_SetBkColor(0xff00);

          GUI_Clear();

          GUI_DispStringAt(“hello world”,0,0);

          Break;

          }

          }

          程序清單 4.1 建立一個自動更新窗口的回調(diào)函數(shù):

          #include GUI.H

          /* 背景窗的回調(diào)函數(shù) */

          static void cbBackgroundWin(WM_MESSAGE* pMsg)

          {

          switch (pMsg->MsgId)

          {

          case WM_PAINT: GUI_Clear();

          default: WM_DefaultProc(pMsg);

          }

          }

          /* 前景窗的回調(diào)函數(shù) */

          static void cbForegroundWin(WM_MESSAGE* pMsg)

          {

          switch (pMsg->MsgId)

          {

          case WM_PAINT: GUI_SetBkColor(GUI_GREEN);

          GUI_Clear();

          GUI_DispString(Foreground window);

          default: WM_DefaultProc(pMsg);

          }

          }

          /* 回調(diào)機(jī)制 */

          static void DemoRedraw(void)

          {

          GUI_HWIN hWnd;

          while(1)

          {

          /*創(chuàng)建一個前景窗 */

          hWnd = WM_CreateWindow(10, 10, 100, 100, WM_CF_SHOW, cbForegroundWin, 0);

          /*顯示前景窗*/

          GUI_Delay(1000);

          /* 刪除前景窗 */

          WM_DeleteWindow(hWnd);

          GUI_DispStringAt(Background of window has not been redrawn, 10, 10);

          /* 等待,顯示并不重繪 */

          GUI_Delay(1000);

          GUI_Clear();

          /* 設(shè)置背景窗的回調(diào)功能 */

          WM_SetCallback(WM_HBKWIN, cbBackgroundWin);

          /*創(chuàng)建一個前景窗 */

          hWnd = WM_CreateWindow(10, 10, 100, 100,WM_CF_SHOW, cbForegroundWin, 0);

          /* 顯示前景窗*/

          GUI_Delay(1000);

          /*刪除前景窗 */

          WM_DeleteWindow(hWnd);

          /* 等待,顯示將重繪*/

          GUI_Delay(1000);

          /* 刪除回調(diào)函數(shù) */

          WM_SetCallback(WM_HBKWIN, 0);

          }

          }

          void main(void)

          {

          GUI_Init();

          DemoRedraw();

          }

          消息傳遞機(jī)制

          程序清單4.2中,回調(diào)函數(shù)執(zhí)行的功能依賴于所接收到的消息。Switch語句中根據(jù)消息的類型,分別執(zhí)行不同的功能。

          WM_MESSAGE的成員如下:

          MsgId:消息類型

          HWin: 目的窗口

          HWinSrc: 源窗口

          Data.p : 數(shù)據(jù)指針

          Data.v: 數(shù)據(jù)值

          其中MsgId的類型如下:

          WM_PAINT: 窗口重繪

          WM_CREATE: 窗口一建立就發(fā)送

          WM_DELETE: 窗口一刪除就發(fā)送

          WM_SIZE : 窗口尺寸發(fā)生改變就發(fā)送

          WM_MOVE : 窗口移動就發(fā)送

          WM_SHOW : 接收到show命令就發(fā)送

          WM_HIDE : 接收到hide命令就發(fā)送

          WM_TOUCH: 觸摸屏信息

          應(yīng)用程序還可以為自己定義額外的消息。為保證它們不用到uC/GUI的消息ID,用戶定義的消息從WM_USER后面開始,如:

          #define MY_MESSAGE_AAA WM_USER +0

          #define MY_MESSAGE_BBB WM_USER +1


          上一頁 1 2 下一頁

          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉