首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

打造個性化選單:模擬 Windows XP 風格彈出選單

     編輯:關於VC++

Windows XP 開始選單風格獨特,經分析發現其非標準 CMenu,而是由兩個 ListView、一個 ToolBar、一個 Button 組合而成。本文提供一套自繪選單類 CYisongMenu,雖不敢與 XP 相比,但具備獨特風格,可作為主選單、系統匣選單、右鍵快捷選單使用。

核心類別結構

主要檔案:CyisongMenu.cpp、CyisongMenu.h,基於 CWnd 與 CButton 實作。

使用方法

1. 宣告選單物件

CYisongMenu m_GroupMenu;
CYisongMenu m_SubGroupMenu;  // 子選單

2. 設定選單標題與加入項目

m_GroupMenu.SetMenuHeader("我的主選單", IDI_QQ, TRUE);

m_GroupMenu.AppendMenuItem("退出系統", 
    IDC_SUBITEM,      // 選單 ID
    IDI_ICON1,        // 圖示
    NULL,             // 子選單指標
    MENU_NORMAL | MENU_FONTBOLD);  // 樣式:一般項目 + 粗體字

m_GroupMenu.AppendMenuItem("功能選單2",
    IDC_SUBITEM + 1,
    IDI_ICON2,
    NULL,
    MENU_NORMAL);

3. 建立選單視窗

m_GroupMenu.CreateGroupMenu(this, CRect(0,0,150,300), IDC_MENU, 1, 1);

4. 若需子選單,重複步驟 2-3,並將子選單指標傳給 AppendMenuItem

5. 顯示選單

m_GroupMenu.ShowMenuPos(x, y, LEFTBOTTOM);  // 第三參數指定 (x,y) 為選單哪個角

6. 處理命令訊息

// 訊息對應
ON_COMMAND_RANGE(IDC_SUBITEM, IDC_SUBITEMMAX, OnMenuCommand)

// 回應函式
void OnMenuCommand(UINT nID)
{
    CString str;
    str.Format("你選擇了第 %d 功能", nID - IDC_SUBITEM + 1);
    MessageBox(str, "執行結果");
}

主要函式說明

  • SetMenuHeader(CString 標題, UINT 圖示ID, BOOL 顯示標題)
  • AppendMenuItem(CString 標題, int ID, int 圖示ID, CWnd* 子選單, DWORD 樣式, CString 提示)
    • 樣式旗標:MENU_NORMAL、MENU_FONTBOLD、MENU_BORDLINE(分隔線)、MENU_SUBITEM(有子選單)、MENU_CHECKBOX
  • CreateGroupMenu(CWnd* 父視窗, CRect 位置, UINT ID, BOOL 顯示標題, int 圖示模式)
    • 圖示模式:1=16x16, 2=32x32, 3=48x48

歡迎批評指正與提出建議!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved