VS2010-MFC(菜單:VS2010菜單資源詳解)


 

轉自:http://www.jizhuomi.com/software/210.html

 

上一節講了標簽控件Tab Control以后,常用控件的內容就全部講完了,當然並沒有包括所有控件,主要是一些很常用很重要的控件。本節開始講解菜單的概念及使用。

 

       菜單簡介

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

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

       下拉式菜單一般在窗口標題欄下面顯示,大家還記得我們在VS2010/MFC編程入門之二(利用MFC向導生成單文檔應用程序框架)中創建的HelloWorld單文檔工程嗎?它的運行結果窗口的標題欄下就是下拉式菜單。下拉式菜單通常是由主菜單欄、子菜單及子菜單中的菜單項和分隔條所組成的。

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

 

       VS2010菜單資源詳解

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

       按照VS2010/MFC編程入門之二中的步驟創建一個名為“Example34”的MFC單文檔工程。打開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”。

 

 

       VS2010菜單資源編輯

       我們試着在Example34的IDR_MAINFRAME菜單資源中添加菜單項。

       在主菜單欄的“Help”菜單項上點右鍵,彈出右鍵菜單,選擇“Insert New”,就在“Help”菜單項前添加了一個空的菜單項,我們可以直接在其中輸入標題,也可以在屬性頁中設置Caption屬性,標題設為“&Tools”。

       然后編輯Tools下子菜單的第一個菜單項,標題設為“&Draw\tCtrl+D”,即熱鍵為D,快捷鍵為Ctrl+D。其ID默認為ID_TOOLS_DRAW。為了實現快捷鍵的功能,還需要編輯Accelerator,打開Accelerator,在最下面的空白行中,ID選擇為ID_TOOLS_DRAW,Modifier選擇“Ctrl”,Key輸入“D”,這樣就設置好了快捷鍵。

       最終的菜單資源如下圖:

 

 

 

 

 

       本節內容就是這些了,主要是關於菜單的一些基礎知識,比較好理解。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM