在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            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)閉