程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 自繪菜單

自繪菜單

編輯:關於C語言

 

 

在這裡提供一個C++類(CCustomMenu),該類是CMenu的子類,並且擁有自繪能力。

它可以向你提供以下的功能:

 

設置字體顏色。

設置高亮度顏色。

設置高亮度時的風格。

設置選中時和在普通狀態下的菜單顯示的圖標。

設置顯示圖標大小。

在CCustomMenu中定義了結構MENUDATA,你必須根據你的需要填充該結構,並且

在增加菜單時提供該結構的指針(調用AppendMenu,InsertMenu)。下面是一個例子:

 

1、定義CCustomMenu的實例,和MENUDATA結構變量。

 

    CCustomMenu m_cCustomMenu;

    MENUDATA menuData [8];  // as many menu items are present , You should be able to use

                //new and do the same

2、調用CreateMenu()設置有關參數。

    m_customMenu.CreateMenu ();

    m_customMenu.SetIconSize (25,25);   //This is to set the size of the Icon.

                        // This should be used only once for any menu

    // in order to resize it, destroy and create the menu again with  different size.

    m_customMenu.SetHighlightStyle (Normal); //Or TextOnly, if you want the

    // background color to remain the same

    // and the Text color to change to the Highlight color.

        // The following setXXXColor sets the menu colors. If you dont want to change any, Dont call these member functions.

           m_customMenu.SetTextColor (RGB (255,0,0));

           m_customMenu.SetBackColor (RGB (255,255,255));

           m_customMenu.SetHighlightColor (RGB (0,0,255));

3、設置MENUDATA變量,並增加菜單項。

        lstrcpy (menuData[0].menuText , "text1");

        menuData[0].menuIconNormal= IDI_ICON1;

        m_customMenu.AppendMenu (MF_OWNERDRAW,3,(LPCTSTR)menuData);

 

3、在你的窗口中重載OnMeasureItem(...)函數。

void CMyView::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)

{

    if ( lpMeasureItemStruct->CtlType == ODT_MENU &&

            IsMenu((HMENU)lpMeasureItemStruct->itemID) &&

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved