機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
PPSM嵌入式RTOS中的窗口系統(tǒng)開發(fā)
PPSM嵌入式RTOS中的窗口系統(tǒng)開發(fā)
 更新時間:2008-8-18 10:09:14  點擊數(shù):24
【字體: 字體顏色

  ②  窗口的風格:
  WS_MAINWND——應(yīng)用程序主窗口。關(guān)閉主窗口將自動關(guān)閉應(yīng)用程序。
  WS_POPUP——彈出式窗口。單擊非窗口區(qū)域?qū)⒆詣雨P(guān)閉該窗口。該屬性不能和WS_MAINWND同時出現(xiàn)。
  WS_NOBORDER——無邊框窗口。
  WS_NOSTATEBAR——無狀態(tài)條控件的窗口。一般窗口均有一個在窗口底部的狀態(tài)條,提供彈出該窗口的命令菜單、顯示窗口標題、關(guān)閉窗口、打開選擇輸入法、顯示系統(tǒng)日期和時間等功能。
 、  WS_POPUP類窗口的屏幕活動區(qū)和窗口活動區(qū)的ID。
 、  窗口當前的光標位置。
  ⑤  窗口中控件的列表。
 、  窗口保存其覆蓋區(qū)域的內(nèi)存指針。
 、  前一個窗口的指針。用以在關(guān)閉窗口時重設(shè)應(yīng)用程序的頂層窗口。
 、  窗口的缺省輸入法類型和打開的輸入法控件的句柄。
 、  窗口的焦點控件的句柄。焦點控件將最先處理字符輸入的消息。
  ⑩  窗口的消息處理函數(shù)指針。

3.2  窗口的創(chuàng)建和操作函數(shù)介紹

 、  HWND CreateWindow(WNDCLASS &wndCls);
  WNDCLASS結(jié)構(gòu)定義窗口的基本屬性,如位置、大小、標題、風格等,見上面所述。該函數(shù)為窗口運行時的結(jié)構(gòu)分配內(nèi)存,初始化屬性,并返回窗口結(jié)構(gòu)的指針。
  ②  BOOL ShowWindow(HWND hWnd);
顯示一個窗口。其工作包括:掛起以前的活動區(qū);保存窗口的覆蓋區(qū)域的圖形;如果是有WS_POPUP屬性的窗口,須設(shè)定屏幕和窗口的活動區(qū);向該窗口的消息處理函數(shù)傳遞WM_ONSHOW消息(事實上是直接調(diào)用該函數(shù)),以提供編程人員在窗口上繪制控件以外的圖形的機會;如果是沒有WS_NOSTATEBAR的窗口,添加Statebar控件;依次調(diào)用窗口中各控件的繪制函數(shù)以顯示控件;設(shè)第一個有焦點控件為窗口當前的焦點控件。
 、  BOOL CloseWindow(HWND hWnd);
  關(guān)閉一個窗口。其工作包括:向該窗口的事件處理函數(shù)發(fā)送WM_CLOSE消息,如果返回FALSE則退出本函數(shù),如果返回TRUE則繼續(xù)以下工作 ——恢復(fù)窗口覆蓋區(qū)圖形;釋放POPUP類窗口的屏幕活動區(qū)和窗口活動區(qū); 依次釋放該窗口包含的控件;隱藏光標;釋放該窗口結(jié)構(gòu)占用的內(nèi)存;向上層窗口發(fā)送WM_TOPWNDCLOSE的消息,該消息用于下層窗口更新需要自動變化的界面,如股票實時大盤數(shù)據(jù)表;設(shè)置該窗口的前一層窗口為應(yīng)用程序的頂層窗口。
 、 WNDPROC函數(shù)指針類型。
  typedef BOOL (*WNDEVENTHANDLE)
  (HWND hWnd, U16 msgType, U32 id,P_U32 data, U32 size);
  ⑤ DefWndProc(HWND hWnd, U16 msgType, U32 id,P_U32 data, U32 size);
  處理如POPUP窗口區(qū)外的點擊自動關(guān)閉窗口之類的消息和行為。
  ⑥U32 WndAddCommand(HWND hWnd, P_S8 cmdName, U16 cmdLen, P_U8 cmdIcon);
  向有狀態(tài)條控件的窗口增加應(yīng)用程序定義的命令。命令出現(xiàn)在狀態(tài)條的彈出菜單中。該函數(shù)返回一個唯一的命令I(lǐng)D,用于窗口處理WM_COMMAND消息時區(qū)分命令。
 、 BOOL WndDelCommand(HWND hWnd, HCMD cmdId);
  刪除一條命令。
  ⑧ U32 WndSetCommand(HWND, U32 cmdId, P_S8 newCaption);
  修改一條命令。
 、 其它函數(shù)。因篇幅原因,不能完全列出和解釋所有的窗口操作函數(shù)。

3.3  控件的實現(xiàn)

 。1)  控件的基本結(jié)構(gòu)

  我們使用控件的基本結(jié)構(gòu)定義各類控件的公共屬性。具體的控件結(jié)構(gòu)在此基礎(chǔ)上擴展,以包含其它屬性。以下論述控件的基本屬性。

  首先,在窗口的顯示過程中,各控件的外觀由自己繪制,因而各種控件需要一個繪制函數(shù)。該函數(shù)在定義具體控件時定義,在控件結(jié)構(gòu)中保留該類函數(shù)的指針。其次,各種控件需要各自的消息處理函數(shù),該函數(shù)的指針也保存在結(jié)構(gòu)中。最后,一些控件可能會動態(tài)分配內(nèi)存空間以保存自身的數(shù)據(jù)?丶枰诒会尫艜r釋放這樣的內(nèi)存,因而控件結(jié)構(gòu)中也保存控件釋放函數(shù)的指針。

  控件是窗口上的一個可操作區(qū)域,主要由筆輸入來操作,因而控件需要響應(yīng)筆操作的活動區(qū)。各種控件的活動區(qū)數(shù)量不同,因而在控件結(jié)構(gòu)中需要保存一個可增長的活動區(qū)列表;但控件的屏幕區(qū)域可能覆蓋部分窗口中的其它活動區(qū)(如其它控件),從而造成控件操作的混亂,因此需要一個控件占用區(qū)域的活動區(qū),以屏蔽其它可能造成干擾的活動區(qū)。

  由于我們需要各種控件能在定義新控件時使用,即作為新控件的子控件,在控件的結(jié)構(gòu)中,須保存子控件列表。各類控件的繪圖、消息處理和釋放函數(shù),必須為控件系統(tǒng)定義的相應(yīng)的缺省處理函數(shù)。這些缺省處理函數(shù)根據(jù)控件的子控件列表,首先調(diào)用子控件的相應(yīng)函數(shù)。

 。2)  具體控件定義的方法

 、  一個具體的控件對應(yīng)一個特定的結(jié)構(gòu)。該結(jié)構(gòu)首先包含控件的基本結(jié)構(gòu),其次定義該控件所需要的其它屬性。如按鍵控件,需要有按鍵的類型、顯示的文本或圖形、筆操作所需的活動區(qū)ID和按下狀態(tài)等屬性。
 、  定義控件的繪制、消息處理和釋放函數(shù)。
 、  定義該控件的創(chuàng)建函數(shù),如CreateButton()。在該函數(shù)的參數(shù)中包含該控件所需的初始屬性、參數(shù)中標準的部分是控件的位置和大小。該函數(shù)初始化該控件結(jié)構(gòu)的屬性,包括初始化在基本控件結(jié)構(gòu)中的控件繪制、消息處理和釋放函數(shù)指針,使之指向相應(yīng)的函數(shù)。
 、  定義操作控件、存取控件中數(shù)據(jù)所需的其它函數(shù)。

  (3)系統(tǒng)預(yù)定義的控件

  在系統(tǒng)中,已經(jīng)使用這種定義方式定義了一些常用的控件。它們有:

 、  按鍵:Button。文本或圖形按鍵,Check方式按鍵。
 、  標簽:Label。
 、  復(fù)選框:CheckBox。
 、  單選框:RadioBox。
  ⑤  組合框:CombBox。
 、  滾動條:ScrollBar。水平或垂直,簡單類型滾動條可作為Spin使用。
  ⑦  編輯框:TextBox。單行或多行,可編輯或不可編輯,有選塊功能。
 、  列表框:ListBox。單列或多列,選項可帶有圖標。
 、  狀態(tài)條:StateBar。含有命令菜單彈出按鍵、窗口關(guān)閉按鍵(在窗口關(guān)閉按鍵上顯示窗口標題)、輸入法按鍵、輸入法選擇按鍵、日期和時間顯示區(qū)。
  日歷控件:Canlendar。顯示任意年月的日期,可切換公歷和農(nóng)歷。
  組合日歷控件:Date。單行顯示日期,有彈出日歷的按鍵。
  電子表格:Excel。顯示數(shù)據(jù)庫的記錄,可按每列對應(yīng)的字段排序。
  組控件:Group。用于控件分組。

3.4  菜單系統(tǒng)

  菜單是通過在POPUP窗口中加入ListBox控件實現(xiàn)的。菜單窗口的消息處理函數(shù)在用戶選擇列表框項目后自動關(guān)閉,并向應(yīng)用程序發(fā)送WM_ MENUCLICK消息。該消息帶有選項的序號。

  使用PopupMenu()函數(shù)彈出菜單。PopupMenu()函數(shù)根據(jù)列表的項目數(shù)和列表文本的最大寬度,確定窗口的大小,創(chuàng)建窗口并添加列表框控件,在指定的位置顯示。

參考文獻

1  Motorola公司. PPSM程序員指南(PPSM Programmer’s Manual V3.1). http://apspg.motorola.com/products/dragonballez/dragonball.html#ppsm

  • 上一篇: TMS320C55x的指令流水線及其效率的提高
  • 下一篇: 嵌入式系統(tǒng)硬件抽象層的建立及軟件的可移植性設(shè)計
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1