设为首页 加入收藏

TOP

自绘菜单
2014-11-23 20:10:11 】 浏览:4546
Tags:菜单

在这里提供一个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) &&

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇进程间通信 下一篇让你的工具栏多姿多彩

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目