菜單欄

菜單欄

為軟件功能提供功入口
菜單欄實際是一種樹型結構,為軟件的大多數功能提供功能入口。點擊以後,即可顯示出菜單項。在功能上,工具欄其實是菜單欄的子集、包含菜單欄裡最常用的功能;在使用方式上,工具欄比菜單欄方便,點一下鼠标就行。
    中文名:菜單欄 外文名:menu bar 位 置:标題欄下方 組 成:9個命令菜單 分 類:下拉式菜單和彈出式菜單

概述

菜單,将系統可以執行的命令以階層的方式顯示出來的一個界面。一般置于畫面的最上方或者最下方,應用程序能使用的所有命令幾乎全部都能放入。重要程度一般是從左到右,越往右重要度越低。命定的層次根據應用程序的不同而不同,一般重視文件的操作、編輯功能,因此放在最左邊,然後往右有各種設置等操作,最右邊往往設有幫助。一般使用鼠标的第一按鈕進行操作。

即時菜單(又稱功能表、上下文菜單(Context Menu)),與應用程序準備好的層次菜單不同,在菜單欄以外的地方,通過鼠标的第二按鈕調出的菜單稱為“即時菜單”。根據調出位置的不同,菜單内容即時變化,列出所指示的對象可以進行的操作。

Word中

Microsoft Word2003菜單欄位于标題欄下方,由“文件”、“編輯”、“視圖”、“插入”、“格式”、“工具”、“表格”、“窗口”和“幫助”等組成組成。

單擊菜單欄中的菜單命令将會出現一個下拉菜單。Word2003的菜單有自動記錄功能,也就是說Word 2003記錄了用戶的常用操作習慣,隻在菜單中顯示最接近上次常用的命令,這為用戶選擇常用命令提供了很大的方便。如果某些命令在一段時間内沒有被使用,就會自動隐藏。在菜單的底部都有一個箭頭按鈕,單擊該按鈕即可顯示全部的菜單命令。

在菜單欄中,某些命令後邊有個箭頭符号,這表示該命令項後還有下一級子菜單。将鼠标停留一下,就會自動彈出子菜單。

如果在菜單命令的前面有一個對号,表明該菜單命令被激活。取消該命令前面的對号,則表明該命令沒有被激活。如果用戶看到某些命令的顔色變為淺灰色,表示該菜單命令暫時不能使用。如果菜單命令前面有圖标,表明可以将這些命令添加到工具欄中。如果我們還會看見菜單命令的後面有組合按鍵,如Ctrl+O,這實際上的該命令的快捷鍵,熟記這些快捷鍵有助于我們快速操作。

控件菜單

菜單控件顯示應用程序的自定義菜單。命令、子菜單或者分隔條都可包括在菜單之中。每一個創建的菜單至多有四級子菜單。菜單控件是一組通常在功能上相關的命令或控件的容器。提供特殊的布局行為,并支持用戶啟動的工具欄大小調整和排列。像winform/wpf ToolBar控件或專業控件ComponentOne的MenusandToolbars,可創建停靠/浮動的工具欄,多級菜單,全局的快捷鍵、可折疊/可展開的頁面,MDI應用程序使用的窗口列表等。

VC菜單

簡介

菜單在界面設計中是經常使用的一種元素,包括Windows系統中的窗口、智能終端設備的應用界面等都會經常見到菜單的身影。我們在對可視化窗口操作時,菜單确實提供了很大方便。

菜單可以分為下拉式菜單和彈出式菜單。

下拉式菜單一般在窗口标題欄下面顯示。下拉式菜單通常是由主菜單欄、子菜單及子菜單中的菜單項和分隔條所組成的。

彈出式菜單一般可以通過單擊鼠标右鍵等操作顯示。它的主菜單不可見,隻顯示子菜單。

資源

菜單也可以在VC的資源視圖中直接創建編輯。我們先創建一個新的MFC單文檔工程Example34,具體看看菜單的組成結構及各種标記的意義。

打開Resource View資源視圖,展開Example34->Example34.rc->Menu,我們可以看到有一個ID為IDR_MAINFRAME菜單資源,雙擊打開。

包含“File”的一欄是主菜單欄,點擊“File”彈出子菜單,可以看到子菜單中有多個菜單項和分隔條。菜單項中含有“...”則表示點擊後會彈出對話框。

除了這些,我們還注意到,很多菜單項的标題文本中都有一個字母帶下劃線,帶下劃線的字母為熱鍵,例如,主菜單欄上的“File”中字母“F”帶下劃線,F就是熱鍵,程序運行并顯示窗口時,在鍵盤上點擊Alt+F就等同于直接點菜單項File,彈出File下的子菜單後,點擊“Open”的熱鍵O就可以實現與直接點菜單項Open相同的功能。

那麼熱鍵是如何定義的呢?我們可以看下“File”菜單項的屬性,Caption為“&File”,很明顯,隻要在要定義為熱鍵的字母前加&就可以了。

有些菜單項的右側還顯示了一些字符串,例如,“New”的右側顯示有“Ctrl+N”,這些代表的是快捷鍵,也就是“New”菜單項的快捷鍵是Ctrl+N,“Open”菜單項的快捷鍵是Ctrl+O,用這些組合鍵就能實現與相應菜單項一樣的功能。

快捷鍵如何定義?我們再來看看“Open”菜單項的Caption屬性,為“&Open...tCtrl+O”,這裡的t表示在顯示前面的文本後跳格再顯示快捷鍵Ctrl+O,但這樣設置其Caption屬性隻是能顯示出快捷鍵,要實現快捷鍵的功能還需要在Accelerator資源中設定。資源視圖中展開Example34.rc->Accelerator,雙擊打開下面的IDR_MAINFRAME,可以看到Accelerator中有四列,分别為:ID、Modifier、Key和Type。ID就是菜單項的ID,Modifer和Key就代表了組合鍵。例如,Open菜單項的ID為ID_FILE_OPEN,Modifer為“Ctrl”,Key為“O”。

CMenu類

MFC為菜單的操作提供了CMenu類,下面就常用的幾個成員函數進行簡單的介紹。

BOOL LoadMenu(UINT nIDResource);

加載菜單資源,并将其附加到CMenu對象上。參數nIDResource指定了要加載的菜單資源的ID。如果菜單加載成功則返回TRUE,否則返回FALSE。

BOOL DeleteMenu(UINT nPosition,UINT nFlags);

在菜單中删除一個菜單項。參數nPosition指定要删除的菜單項。參數nFlags就用來解釋nPosition的意義,為MF_BYCOMMAND時說明nPosition表示菜單項的ID,為MF_BYPOSITION時說明nPosition表示菜單項的位置,第一個菜單項的位置為0。如果删除菜單項成功則返回TRUE,否則返回FALSE。

BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect=0);

用來在指定位置顯示一個浮動的彈出式菜單。參數nFlags指定屏幕坐标和鼠标位置的标志,可以是以下取值:

TPM_CENTERALIGN:菜單在水平方向上相對于參數x指定的坐标值居中顯示

TPM_LEFTALIGN:菜單的左側與參數x指定的坐标值對齊

TPM_RIGHTALIGN:菜單的右側與參數x指定的坐标值對齊

TPM_BOTTOMALIGN:菜單的底部與參數y指定的坐标值對齊

TPM_TOPALIGN:菜單項的頂部與參數y指定的坐标值對齊

TPM_VCENTERALIGN:菜單在垂直方向上相對于參數y指定的坐标值居中顯示

這裡先介紹這幾個比較常用的,其他可參見MSDN。參數x指定彈出式菜單的水平方向的屏幕坐标,參數y指定菜單頂部垂直方向上的屏幕坐标,參數pWnd指明哪個窗口擁有此彈出式菜單,不能為NULL,參數lpRect忽略。

UINT CheckMenuItem(UINT nIDCheckItem,UINT nCheck);

在彈出菜單中為菜單項增加選中标記或移除選中标記。參數nIDCheckItem指定要選中或取消選中的菜單項。參數nCheck指定菜單項的選中狀态和如何根據nIDCheckItem确定菜單項的位置,可以是MF_CHECKED或MF_UNCHECKED與MF_BYPOSITION或MF_BYCOMMAND的組合,這幾個标志的含義如下:

MF_BYCOMMAND:為默認值。說明參數nIDCheckItem表示菜單項的ID

MF_BYPOSITION:說明參數nIDCheckItem表示菜單項的位置,第一個菜單項的位置是0

MF_CHECKED:為菜單項添加選中标記

MF_UNCHECKED:為菜單項移除選中标記

該函數返回菜單項之前的狀态:MF_CHECKED或MF_UNCHECKED,如果菜單項不存在則返回0xFFFFFFFF。

UINT EnableMenuItem(UINT nIDEnableItem,UINT nEnable);

激活、禁用菜單項或使其變灰。參數nIDEnableItem指定要激活、禁用或變灰的菜單項。參數nEnable指定操作的類型,可以是MF_DISABLED、MF_ENABLED或MF_GRAYED與MF_BYCOMMAND或MF_BYPOSITION的組合,這些值的含義如下:

MF_BYCOMMAND:同CheckMenuItem

MF_BYPOSITION:同CheckMenuItem

MF_DISABLED:禁用菜單項,使其不能被選擇但不變灰

MF_ENABLED:激活菜單項,使其能夠被選擇并由變灰狀态恢複

MF_GRAYED:禁用菜單項,使其不能被選擇并變灰

該函數返回菜單項之前的狀态:MF_DISABLED、MF_ENABLED或MF_GRAYED

CMenu*GetSubMenu(int nPos)const;

獲取彈出菜單的CMenu對象。參數nPos指定彈出菜單在菜單中的位置,不能使用ID。返回值是CMenu對象的指針,該CMenu對象的m_hMenu成員為由nPos指定的彈出菜單的句柄,如果不存在這樣的CMenu對象則返回NULL,然後創建一個臨時彈出菜單。

ASP.NET菜單欄控件概述

利用ASP.NETMenu控件,可以開發ASP.NET網頁的靜态和動态顯示菜單。您可以在Menu控件中直接配置其内容,也可通過将該控件綁定到數據源的方式來指定其内容。

無需編寫任何代碼,便可控制ASP.NETMenu控件的外觀、方向和内容。除該控件公開的可視屬性外,該控件還支持ASP.NET控件外觀和主題。有關外觀和主題的更多信息,請參見ASP.NET主題和外觀概述。

靜态顯示和動态顯示

Menu控件具有兩種顯示模式:靜态模式和動态模式。靜态顯示意味着Menu控件始終是完全展開的。整個結構都是可視的,用戶可以單擊任何部位。在動态顯示的菜單中,隻有指定的部分是靜态的,而隻有用戶将鼠标指針放置在父節點上時才會顯示其子菜單項。

靜态顯示行為

使用Menu控件的StaticDisplayLevels屬性可控制靜态顯示行為。StaticDisplayLevels屬性指示從根菜單算起,靜态顯示的菜單的層數。例如,如果将StaticDisplayLevels設置為3,菜單将以靜态顯示的方式展開其前三層。靜态顯示的最小層數為1,如果将該值設置為0或負數,該控件将會引發異常。

動态顯示行為

MaximumDynamicDisplayLevels屬性指定在靜态顯示層後應顯示的動态顯示菜單節點層數。例如,如果菜單有2個靜态層和2個動态層,則菜單的前三層靜态顯示,後兩層動态顯示。

如果将MaximumDynamicDisplayLevels設置為0,則不會動态顯示任何菜單節點。如果将MaximumDynamicDisplayLevels設置為負數,則會引發異常。

上一篇:陳雲林

下一篇:VCF

相關詞條

相關搜索

其它詞條