[翻譯]-Windows CE 程式設計 (3rd 版)–5.2 公用控制項(十三)

來源:互聯網
上載者:User

使用菜單條                                                                                翻譯:tellmenow
一旦建立了菜單條,可能還需要配置它。雖然菜單條看上去和命令條不同,但它同樣是建立在工具條基礎上的。所以儘管您不希望菜單條的行為總是和命令條一樣,但您可以一些命令條的函數和工具條的訊息。例如,公用控制項的一個很方便的特性是它們包含一系列位元影像,用於工具條上的按鈕。所以您不必自己建立位元影像,這樣可能會建立一個非標準圖象,您可以使用系統提供的映像,用於剪下、複製和粘貼。

在菜單條中使用公用控制項位元影像
要使用系統提供的位元影像,只要簡單的加它們到菜單條中即可,就如同加它們到公用控制列一樣。菜單條被建立的時候,在結構SHMENUBARINFO中指定的任何位元影像將被加到菜單條中。所以,如果有一個包含三個圖象的位元影像,並要加到標準圖象集中,那麼“剪下(cut)”位元影像圖象應該指定為STD_CUT+3。在下面的程式碼片段中,將建立一個菜單條,並且將標準圖象集加到其中。
if(!SHCreateMenuBar(&mbi))
   return NULL;
CommandBar_AddBitmap(mbi.hwndMB, HINST_COMMCTRL, IDB_STD_SMALL_COLOR, STD_PRINT, 16,16);
在菜單條資源裡的功能表項目中指定正確的索引,是使用這些圖象的最簡單方法。菜單條項資源中的第一個域就是位元影像圖象索引。只要位按鈕位元影像設定位元影像索引即可。

使用菜單條菜單
有時應用程式需要操縱菜單條,比如設定/清楚檢查標誌(check mark)或者設定功能表項目的生效/失效等。標準函數集(例如CheckMenuItem)用在菜單條上來修改菜單。需要獲得菜單控制代碼,這樣就可以修改功能表項目了。菜單條提供三個訊息用於獲得/設定菜單控制代碼:SHCMBM_GETMENU、SHCMBM_GETSUBMENU和SHCMBM_SETSUBMENU。可以發送SHCMBM_GETMENU和SHCMBM_GETSUBMENU訊息到菜單條來查詢菜單控制代碼或指定的子功能表。下面示範了如何使用SHCMBM_GETMENU來查詢根菜單控制代碼。
hMenu = (HMENU) SendMessage (hwndMenuBar, SHCMBM_GETMENU, 0, 0);
可以使用這個菜單控制代碼來修改菜單條上顯示的任意功能表項目。要查詢繫結到菜單條指定項的子功能表,可以使用SHCMBM_GETSUBMENU,例如
hSubMenu = (HMENU)SendMessage (hwndMenuBar, SHCMBM_GETSUBMENU, 0, ID_VIEWMENU);
參數lParam被設定成菜單條上指定按鈕的ID,本例中,菜單控制代碼綁定到ID是ID_VIEWMENU的按鈕上。

要改變菜單條上特性按鈕的菜單,可以使用SHCMBM_SETMENU訊息,將參數wParam設定為按鈕ID,參數lParam設定成新的菜單控制代碼,例如
hOldMenu = (HMENU)SendMessage (hwndMenuBar, SHCMBM_SETMENU, ID_VIEWMENU, (LPARAM)hNewMenu);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.