利用μC/GUI實(shí)現(xiàn)無紙記錄儀界面
c)當(dāng)對話框關(guān)閉時,記載對話窗體消息回調(diào)函數(shù)的全局變量會被清為0,此時消息LOOP就會退出,對話框結(jié)束。
2.2回調(diào)函數(shù)
回調(diào)函數(shù)是由用戶定義的,當(dāng)特定事件發(fā)生時,指示圖形系統(tǒng)調(diào)用特定函數(shù)的函數(shù)。通常當(dāng)窗口的內(nèi)容發(fā)生改變時,它們用來自動重繪窗門。例如,窗口內(nèi)顯示一幅位圖,當(dāng)窗口移動時,位圖并不會自動移動,此時,就需要調(diào)用回調(diào)函數(shù)對窗口進(jìn)行重繪,即從觀眾的角度來看,移動窗口和窗口內(nèi)容。
μC/GuI提供給窗口和窗口控件的回調(diào)機(jī)制的背后,是一個事件驅(qū)動標(biāo)志。在大多數(shù)的窗口系統(tǒng)中,不僅從用戶程序到圖形系統(tǒng),而且還要能夠從用戶程序到圖形系統(tǒng),并且能夠通過用戶程序提供的回調(diào)函數(shù),返回到用戶程序。這個機(jī)制稱為回調(diào)機(jī)制。在μC/GuI中,回調(diào)機(jī)制用來在窗口管理中控制窗口的重繪操作,這使得窗口管理的有效性成為可能。
使用回調(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()。在工程項目中所有功能都是通過上述消息機(jī)制以及回調(diào)函數(shù)來進(jìn)行實(shí)現(xiàn)的。
3結(jié)束語
本文對μC/GUI的消息機(jī)制、回調(diào)函數(shù)作了簡單介紹。實(shí)現(xiàn)了鍵盤響應(yīng)的無紙記錄儀界面,包括按鈕、列表框各種控件,見圖3。
圖3界面包含了無紙記錄儀中的所有控件,列表框可以實(shí)現(xiàn)上下選擇,編輯框可以實(shí)現(xiàn)輸入,按鈕可響應(yīng)外界消息。通過鍵盤的左右鍵來實(shí)現(xiàn)各控件的切換,以便對某些控件進(jìn)行操作控制。
評論