專利名稱:彈出式菜單實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種手機菜單實現(xiàn)方法,特別是涉及一種彈出式菜單實現(xiàn) 方法。
背景技術(shù):
在一些常見的采用嵌入式系統(tǒng)的嵌入式產(chǎn)品包括手機、PDA、信息家 電等設(shè)備中,設(shè)備所具有的功能一般都會以菜單方式展示給用戶,而且菜 單通常都會分為幾級菜單,設(shè)計人員在進行菜單設(shè)計時常會遇到幾級菜單 都具有相同的風(fēng)格,這種相同風(fēng)格的菜單設(shè)計方式會各有特點。這種設(shè)計 設(shè)計與維護都相對比較復(fù)雜,大大增加了開發(fā)的難度。發(fā)明內(nèi)容本發(fā)明為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種設(shè)計維護簡單 的彈出式菜單實現(xiàn)方法。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是提供一種彈出式菜單實 現(xiàn)方法,其包括以下步驟菜單資源定義方式預(yù)先定義好的一組菜單資源 數(shù)組;用戶界面上始終只顯示一層菜單窗口;每層菜單的顯示內(nèi)容隨著用 戶的選擇不斷被更新彈出,直到用戶選擇了 一個沒有下層菜單的菜單項時, 完成一4侖工作。本發(fā)明解決進一步技術(shù)問題的方案是菜單資源數(shù)組實現(xiàn)菜單層次的 控制與內(nèi)容更新,菜單是逐級更新的。本發(fā)明解決進一步技術(shù)問題的方案是菜單項的顯示內(nèi)容可以不事先 固定而是由設(shè)備根據(jù)工作需要動態(tài)產(chǎn)生。本發(fā)明解決進一步技術(shù)問題的方案是每級菜單的第一項都用于定義 本級菜單的總體信息,包括本級菜單的名稱ID、菜單風(fēng)格標(biāo)識宏、菜單 項資源提取方式標(biāo)志。本發(fā)明解決進一步技術(shù)問題的方案是從第二項菜單項起是本級菜單具體的各菜單項的定義,包括:菜單項名稱ID或名稱內(nèi)容指針、菜單項唯 一功能編號ID、下級菜單。本發(fā)明解決進一步技術(shù)問題的方案是菜單定義的最后一項,是本級 菜單結(jié)束項定義,以菜單項名稱ID等于零為標(biāo)志,代表著本級菜單定義 的完成,其三項內(nèi)容是"0,0,NULL,,相較于現(xiàn)有技術(shù)本發(fā)明的彈出式菜單實現(xiàn)方法通過預(yù)先設(shè)置菜單資源 數(shù)組,使得用戶在使用時每次顯示一層菜單窗口,每層菜單的顯示內(nèi)容隨 著用戶的選擇不斷被更新彈出,這樣的設(shè)計使得維護和開發(fā)更為簡單高效, 用戶使用的靈活性也大大提高了。
圖l是本發(fā)明的彈出式菜單實現(xiàn)方法的流程示意圖。 圖2至圖4是本發(fā)明的彈出式菜單實現(xiàn)方法的使用狀態(tài)顯示效果參考 示意圖。
具體實施方式
以上內(nèi)容是結(jié)合具體的優(yōu)選實施方式對本發(fā)明所作的進一步詳細說 明,不能認(rèn)定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術(shù) 領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若 干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護范圍。下面結(jié)合附圖和實例對本發(fā)明的彈出式菜單實現(xiàn)方法作進一步說明。 請參照圖1,本發(fā)明的彈出式菜單實現(xiàn)方法包括以下步驟菜單資源定義方式預(yù)先定義好的一組菜單資源數(shù)組; 用戶界面上始終只顯示一層菜單窗口 ;每層菜單的顯示內(nèi)容隨著用戶的選擇不斷被更新彈出,直到用戶選擇 了一個沒有下層菜單的菜單項時,完成一輪工作。菜單資源數(shù)組實現(xiàn)菜單層次的控制與內(nèi)容更新,菜單是逐級更新的, 其優(yōu)點是可以定義任意深度的菜單,理論上菜單深度受限于程度實際運行 環(huán)境與可用內(nèi)存大小。菜單項的顯示內(nèi)容可以不事先固定而是由設(shè)備根據(jù) 工作需要動態(tài)產(chǎn)生。按規(guī)定的菜單項組成格式來定義各級菜單每級菜單的第一項都用于定義本級菜單的總體信息,包括本級菜單 的名稱ID、菜單風(fēng)格標(biāo)識宏、菜單項資源提取方式標(biāo)志。
從第二項菜單項起是本級菜單具體的各菜單項的定義,包括:菜單項名 稱ID或名稱內(nèi)容指針、菜單項唯一功能編號ID、下級菜單。
菜單定義的最后一項,是本級菜單結(jié)束項定義,以菜單項名稱ID等 于零為標(biāo)志,代表著本級菜單定義的完成,其三項內(nèi)容是"O,O,NULL,,, 關(guān)鍵的第一項內(nèi)容為零,后二項都是無意義的,可以是任意值。
作為實現(xiàn)本發(fā)明目的的一種具體實施方式
,下面將用程序設(shè)計語言C 來表述其設(shè)計思想。
一、格式定義
(1)
typedef struct
DWORD dwNameld;〃菜單項名稱資源ID(ID值應(yīng)大于零)或 資源緩沖區(qū)指針
WORD wFuncId; 〃與菜單項對應(yīng)的ID(ID值應(yīng)大于零)或 菜單風(fēng)格標(biāo)識宏
struct T_POPUPMENU *ptNextMenu; 〃下級彈出菜單指針或取 資源方式標(biāo)志
} T—POPUPMENU;
這里定義了一種菜單結(jié)構(gòu)類型,從上到下其成員含義是第一項 dwNameld代表著該菜單項的名稱編號ID或者是一個指向名稱資源內(nèi)容的 指針,使用這個編號的好處是我們能夠通過該編號去取得對應(yīng)語言環(huán)境中 的相應(yīng)字符串資源,可以使菜單應(yīng)用于不同的語言環(huán)境中,而其定義可能 保持不變。而使用指向名稱資源內(nèi)容的指針的好處是菜單顯示的內(nèi)容可以 在工作過程中動態(tài)的指定,可以提高菜單的靈活性。第二項wFuncId是與 該菜單項對應(yīng)的一個編號ID,這個編號ID可以在所定義的一組菜單中唯 一的區(qū)分每個不同的菜單項。第三項是指向下一個子菜單的指針或者是表 明本層菜單中菜單項名稱資源的提取方式,也就是指明第一項成員是編號 ID還是指向名稱內(nèi)容的指針。
二、菜單資源實體定義舉例下面以一個手機中的"收件箱"彈出式菜單資源定義實例來更詳細說明 上述格式定義的含義與用法,菜單資源定義好后具體的裝載和顯示不做限 制,用任何方法實現(xiàn)都可以。菜單即可以是全屏顯示也可以是按合適大小 顯示。
〃各菜單項的唯一功能編號ID
她fine POPUPID—REVERTMMS 0x3331
#define POPUPID SAVEASJJ 0x3332 #define POPUPID SAVE AS JJF0LDER1 0X3333 弁define POPUPID—SAVEASJJFOLDER2 0X3334 #define POPUPID一COPYTOLOCAL 0x3335 #define POPUPID—MOVETOLOCAL 0x3336
#define SETMS_NORMAL 0x0000 〃普通列表項 弁define SETMS—RADIO 0x0002 〃單項選4奪項
#define GET—RES_BYID 0 〃按資源ID方式取資源 #define GET—RES—BYBUF 1 〃按緩沖區(qū)方式取資源
子菜單資源聲明
extern const T—POPUPMENU tSelectFolderPopup[];
菜單資源定義
const T—POPUPMENU tlnboxPopup[〗=
第一項是本級菜單的總體信息定義,包括本級菜單名稱ID"0表示無名 稱",菜單的風(fēng)格標(biāo)志,菜單項名稱資源提取方式"GET—RES一BYID" {0, SETMS一NORMAL, GET—RESBYID},〃 group infor
第二項起以下是本級菜單具體信息定義,即各菜單項信息定義,包括 本菜單項名稱ID,菜單項唯一功能編號ID,下級子菜單指針"NULL代表 沒有下級子菜單"{IDS—REVERTMMS,POPUPID REVERTMMS, NULL}, 〃彩信回復(fù){IDS_SAVEASJJ, POPUPID—SAVEASJJ,tSelectFolderPopup }, 〃另存為集錦{IDS—COPYTOLOCAL, POPUPIDCOPYTOLOCAL, NULL}, 〃復(fù)制到本機{IDS—MOVETOLOCAL,POPUPID—MOVETOLOCAL, NULL}, 〃移動到本機最后一項是本級菜單定義結(jié)束的信息,以菜單項名稱ID等于零為標(biāo) 志,后面的"O,NULL"無意義 {0,0,NUIX}};Char cSaveAsJJFolderl[20];用于子菜單項名稱l Char cSaveAsJJFolder2[20];用于子菜單項名稱2 const T—POPUPMENU tSelectFolderPopup[]=在總體信息定義中,"GET_RES—BYBUF,表明了本菜單的菜單項資 源獲取方式是執(zhí)行中動態(tài)給定{0, SETMS—NORMAL, GET—RES—BYBUF}, 〃 group infor{ (DWORD)cSaveAsJJFolderl, POPUPID—SAVEASJJFOLDERl, NULL}, 〃文件夾1{ (DWORD)cSaveAsJJFolder2, POPUPIDSAVEASJJFOLDER2, NULL}, 〃文件夾2{0,0,NULL}};Strcpy(cSaveAsJJFolderl,"搞笑類"); Strcpy(cSaveAsJJFolder 1,"祝福類,,);該菜單顯示效果見圖2所示,當(dāng)用戶選擇一個菜單項后,菜單處理程序判斷被點項是否有下級菜單,若有下級菜單則通過菜單資源數(shù)組中被點 菜單項的第三項成員取得下級菜單的資源指針,用新的菜單內(nèi)容替換當(dāng)前 菜單的內(nèi)容。比如若圖2中中第二個菜單項"另存為集錦"被點則用新的子菜單替換當(dāng)前內(nèi)容,如圖3所示。當(dāng)用戶選擇的菜單項沒有后繼子菜單時,則菜單程序?qū)⒈贿x擇的菜單項的功能ID,通知到調(diào)用菜單的程序,并銷毀掉菜單。程序通過得到的菜 單項功能ID進行相應(yīng)的功能操作。這個例子中的子菜單其顯示的兩個菜 單項內(nèi)容"搞笑類""祝福類",是程序執(zhí)行過程動態(tài)賦值的,程序完全可以 賦值成其他字符串形式,以顯示不同的內(nèi)容。這就體現(xiàn)了這個菜單定義的 靈活性。對于SETMS—RADIO風(fēng)格的菜單,可以定義為 #define POPUPID—BYNETWORK—SET 0x4444 #define POPUPID—TURNON—SET 0x4445 #define POPUPID—TURNOFF—SET 0x4446〃單項選擇彈出式菜單const T—POPUPMENU tSelectFolderPopup[]={IDS—MYNUMBER, SETMS—RADIO, GET—RES—BYID}, { IDS—SET—RADIO—ASNET, POPUPID— BYNETWORK—SET, NULL}, 〃依網(wǎng)絡(luò)設(shè)置{IDS—ON, POPUPID—TURNON—SET,NULL}, 〃啟動{IDS—OFF, POPUPID—TURNOFF—SET,NULL}, 〃關(guān)閉 {0,0,NULL}};顯示效果見圖4所示,當(dāng)用戶選擇菜單中的一項時,菜單程序?qū)⒈贿x 擇的菜單項功能ID,通知到調(diào)用菜單的程序,并銷毀菜單。這類單項選擇 彈出式菜單也可以定義為按資源內(nèi)容指針來取其菜單項名稱, 一樣可以提 高菜單靈活性。
權(quán)利要求
1.一種彈出式菜單實現(xiàn)方法,其包括以下步驟菜單資源定義方式預(yù)先定義好的一組菜單資源數(shù)組;用戶界面上始終只顯示一層菜單窗口;每層菜單的顯示內(nèi)容隨著用戶的選擇不斷被更新彈出,直到用戶選擇了一個沒有下層菜單的菜單項時,完成一輪工作。
2. 根據(jù)權(quán)利要求l所述的彈出式菜單實現(xiàn)方法,其特征在于菜單資 源數(shù)組實現(xiàn)菜單層次的控制與內(nèi)容更新,菜單是逐級更新的。
3. 根據(jù)權(quán)利要求l所述的彈出式菜單實現(xiàn)方法,其特征在于菜單項 的顯示內(nèi)容可以不事先固定而是由設(shè)備根據(jù)工作需要動態(tài)產(chǎn)生。
4. 根據(jù)權(quán)利要求l所述的彈出式菜單實現(xiàn)方法,其特征在于每級菜 單的第一項都用于定義本級菜單的總體信息,包括本級菜單的名稱ID、 菜單風(fēng)格標(biāo)識宏、菜單項資源提取方式標(biāo)志。
5. 根據(jù)權(quán)利要求4所述的彈出式菜單實現(xiàn)方法,其特征在于從第二 項菜單項起是本級菜單具體的各菜單項的定義,包括:菜單項名稱ID或名 稱內(nèi)容指針、菜單項唯一功能編號ID、下級菜單。
6. 根據(jù)權(quán)利要求5所述的彈出式菜單實現(xiàn)方法,其特征在于菜單定 義的最后一項,是本級菜單結(jié)束項定義,以菜單項名稱ID等于零為標(biāo)志, 代表著本級菜單定義的完成,其三項內(nèi)容是"0,0,NULL"。
全文摘要
一種彈出式菜單實現(xiàn)方法,其包括以下步驟提供一種彈出式菜單實現(xiàn)方法,其包括以下步驟菜單資源定義方式預(yù)先定義好的一組菜單資源數(shù)組;用戶界面上始終只顯示一層菜單窗口;每層菜單的顯示內(nèi)容隨著用戶的選擇不斷被更新彈出,直到用戶選擇了一個沒有下層菜單的菜單項時,完成一輪工作。本發(fā)明的彈出式菜單實現(xiàn)方法通過預(yù)先設(shè)置菜單資源數(shù)組,使得用戶在使用時每次顯示一層菜單窗口,每層菜單的顯示內(nèi)容隨著用戶的選擇不斷被更新彈出,這樣的設(shè)計使得維護和開發(fā)更為簡單高效,用戶使用的靈活性也大大提高了。
文檔編號G06F9/44GK101408839SQ20071012382
公開日2009年4月15日 申請日期2007年10月12日 優(yōu)先權(quán)日2007年10月12日
發(fā)明者曾志剛 申請人:康佳集團股份有限公司