当前位置:编程学习 > 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) &&

补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,