利用μC/GUI實(shí)現(xiàn)無(wú)紙記錄儀界面
c)當(dāng)對(duì)話框關(guān)閉時(shí),記載對(duì)話窗體消息回調(diào)函數(shù)的全局變量會(huì)被清為0,此時(shí)消息LOOP就會(huì)退出,對(duì)話框結(jié)束。
2.2回調(diào)函數(shù)
回調(diào)函數(shù)是由用戶定義的,當(dāng)特定事件發(fā)生時(shí),指示圖形系統(tǒng)調(diào)用特定函數(shù)的函數(shù)。通常當(dāng)窗口的內(nèi)容發(fā)生改變時(shí),它們用來(lái)自動(dòng)重繪窗門。例如,窗口內(nèi)顯示一幅位圖,當(dāng)窗口移動(dòng)時(shí),位圖并不會(huì)自動(dòng)移動(dòng),此時(shí),就需要調(diào)用回調(diào)函數(shù)對(duì)窗口進(jìn)行重繪,即從觀眾的角度來(lái)看,移動(dòng)窗口和窗口內(nèi)容。
μC/GuI提供給窗口和窗口控件的回調(diào)機(jī)制的背后,是一個(gè)事件驅(qū)動(dòng)標(biāo)志。在大多數(shù)的窗口系統(tǒng)中,不僅從用戶程序到圖形系統(tǒng),而且還要能夠從用戶程序到圖形系統(tǒng),并且能夠通過(guò)用戶程序提供的回調(diào)函數(shù),返回到用戶程序。這個(gè)機(jī)制稱為回調(diào)機(jī)制。在μC/GuI中,回調(diào)機(jī)制用來(lái)在窗口管理中控制窗口的重繪操作,這使得窗口管理的有效性成為可能。
使用回調(diào)函數(shù)建立一個(gè)窗口時(shí),必須有一個(gè)回調(diào)函數(shù)。所用的回調(diào)函數(shù)必須有如下原型:void callback(wM-MESSAGE*pMsg)。其中pMsg為指向消息的指針?;卣{(diào)函數(shù)執(zhí)行的功能依賴于所接收到的消息。以上原型后面一般跟著switch表達(dá)式,表達(dá)式定義不同的case表達(dá)式下不同的信息對(duì)應(yīng)的不同行為,至少要有一個(gè)重繪函數(shù):WM-PAINT()。在工程項(xiàng)目中所有功能都是通過(guò)上述消息機(jī)制以及回調(diào)函數(shù)來(lái)進(jìn)行實(shí)現(xiàn)的。
3結(jié)束語(yǔ)
本文對(duì)μC/GUI的消息機(jī)制、回調(diào)函數(shù)作了簡(jiǎn)單介紹。實(shí)現(xiàn)了鍵盤響應(yīng)的無(wú)紙記錄儀界面,包括按鈕、列表框各種控件,見(jiàn)圖3。
圖3界面包含了無(wú)紙記錄儀中的所有控件,列表框可以實(shí)現(xiàn)上下選擇,編輯框可以實(shí)現(xiàn)輸入,按鈕可響應(yīng)外界消息。通過(guò)鍵盤的左右鍵來(lái)實(shí)現(xiàn)各控件的切換,以便對(duì)某些控件進(jìn)行操作控制。
評(píng)論