1. 程式人生 > >DuiVision開發教程(19)-菜單

DuiVision開發教程(19)-菜單

int emd 下拉 使用 studio tty .text 字體 tag

DuiVision菜單類是CDuiMenu。有兩種顯示的位置,一種是在窗體頂部某個button點擊後能夠下拉一個菜單,還有一種是托盤圖標的右鍵菜單。
窗體中的菜單定義方式是xml文件裏設置某個button的action屬性,以menu:開頭。後面是菜單的XML文件名稱或XML定義名,比如以下這樣定義:

<imgbtn name="button.menu" pos="-110,0,-77,29" skin="IDB_BT_MENU" tip="菜單" action="menu:mainmenu.xml"/>

托盤菜單默認是依照resource.xml中定義的menu_tray指向的XML文件來載入菜單。
兩種方式載入的菜單定義XML文件格式都是同樣的,參考前面XML說明章節的演示樣例。
菜單類的屬性例如以下:

屬性名 類型 說明
width 數字 菜單窗體寬度
item-height 數字 每一個菜單項的高度
left 數字 菜單左側圖標區的寬度
sep-height 數字 菜單分隔線的高度
font 字符串 字體
fontwidth 數字 字體寬度
frame-width 數字 菜單項距離邊框的寬度
top-height 數字 菜單項頂部距離邊框的高度
bottom-height 數字 菜單項底部距離邊框的高度
crrowhover 顏色 菜單項背景顏色(鼠標移動到菜單項時候的顏色),假設不設置則使用默認顏色
img-rowhover 圖片 菜單項背景圖片(鼠標移動到菜單項時候的背景圖片),優先級比背景顏色高
img-popuparrow 圖片 彈出菜單箭頭圖片

經常使用函數例如以下:

函數 是否虛函數 說明
LoadXmlFile 載入菜單XML文件
AddMenu 動態加入菜單項
AddSeparator 動態加入菜單分隔線
SetItemTitle 預設值菜單項的標題
SetItemVisible 預設值菜單項的可見性
SetItemDisable 預設值菜單項的禁用狀態
SetItemCheck 預設值菜單項的檢查標誌
SetMenuPoint 刷新全部菜單項的位置信息
GetParentMenu 獲取父菜單對象
GetHoverMenuItem 獲取當前激活菜單項對象

菜單中載入的每一個菜單項的控件是CMenuItem類。控件類型名是menuitem,菜單項的屬性例如以下:

屬性名 類型 說明
seperator 0|1 是否分隔線
select 0|1 是否選擇(假設是checkbox或radiobutton類型的菜單項,此屬性必須設置為1)
check 0|1 是否處於選中狀態
group 字符串 廣播button所屬的組名,同樣組名的廣播button是屬於一組的。能夠聯動。一組中僅僅有一個會處於選中狀態
value 字符串 廣播button的值,一組廣播button中的多個button值是不一樣的。當獲取這一組廣播button的值時候,獲取的就是選中的button的值
menu 字符串 引用其它的菜單的名字(通過資源定義能夠找到的菜單的名字),設置了這個屬性,則會將相應的菜單嵌入當前菜單中
image 圖片 菜單項左側的小圖片,假設是彈出菜單,而且沒有設置菜單的img-popuparrow屬性。則image屬性表示菜單項右側的箭頭圖片
img-count 數字 設置菜單項左側圖片是由幾個並列的小圖片組成的
taskmsg 0|1 是否通過任務方式運行菜單處理函數,假設彈出菜單的處理函數中有堵塞或等待的操作(比如打開一個對話框),則運行過程中彈出菜單可能會由於失去焦點而將自身的對象刪除,這樣的情況下就須要通過任務方式運行菜單處理函數,任務方式是將操作插入任務隊列。由任務隊列線程再去運行菜單處理函數

菜單項類的經常使用函數例如以下:

函數 是否虛函數 說明
SetCheck 設置是否選擇
GetCheck 獲取是否選擇的狀態
IsSeparator 推斷是否分隔線
SetGroupName 設置廣播button組的名字
GetGroupName 獲取廣播button組的名字
GetValue 獲取廣播button的值
GetGroupValue 獲取廣播button組的值
ResetGroupCheck 刷新父控件以下全部同一個組的RadioButton控件的狀態

菜單界面示比例如以下:
技術分享技術分享技術分享


DuiVision開源碼下載地址(github):https://github.com/blueantst/DuiVision
藍螞蟻工作室主頁:http://www.blueantstudio.net
DuiVision QQ群:325880743
微信公眾號:blueantstudio 或搜索 藍螞蟻工作室

DuiVision開發教程(19)-菜單