WEB开发网
开发学院软件开发VC 一种漂亮的自绘菜单 阅读

一种漂亮的自绘菜单

 2008-01-19 20:25:30 来源:WEB开发网   
核心提示:该函数有包括第一级菜单.但必须注意:该类的任一实例都只能调用这两个函数中的一个,不能一同使用!!!二、CMenuEx类的具体使用步骤:2.1 用CMenuEx类加载主窗口菜单的具体步骤:1、添加CMenuEx成员变量CMenuEx m_menu2、CMainFrame类添加WM_INITMENU消息,并在实现函数中加入

该函数有包括第一级菜单.

但必须注意:该类的任一实例都只能调用这两个函数中的一个,不能一同使用!!!

二、CMenuEx类的具体使用步骤:

2.1 用CMenuEx类加载主窗口菜单的具体步骤:

1、添加CMenuEx成员变量

CMenuEx m_menu

2、CMainFrame类添加WM_INITMENU消息,并在实现函数中加入代码:

m_menu.InitMenu(pMenu,IDR_MAINFRAME,&m_wndToolBar);

IDR_MAINFRAME是工具栏资源ID,m_wndToolBar是工具栏对象

3、CMainFrame类添加WM_DRAWITEM和WM_MEASUREITEM消息,并在实现函数分加入:

if(!nIDCtl) m_menu.DrawItem(lpDrawItemStruct);
if(!nIDCtl) m_menu.MeasureItem(lpMeasureItemStruct);

只须这三步就大功造成了!

但是有时你会发现菜单的位图错位了,这不是程序的错。

这是因为“工具栏位图”的个数与“工具栏按钮个数”不符,

你只需把不用的位图删掉就可以,或者添加对应的菜单项,反正使这两个数目一致就对了

4、如果你想要让你的菜单拥有“纵向位图”(像“开始”菜单),就必须在CMainFrame在OnCreate()中加入:

m_menu.SetImageLeft(IDB_BITMAP1);//IDB_BITMAP1是指定位图

2.2 用CMenuEx类加载弹出菜单的具体步骤:

1、在CChildView类中加入成员变量 CMenuEx m_menu和CToolBar *m_pToolBar

为什么要加入m_pToolBar,这里做一下说明:

因为在CMenuEx的接口函数InitPopupMenu()中需要工具栏对象指针,而工具栏对象又偏偏是CMainFrame类的成员

所以设此指针变量指向工具栏对象

2、给CChildView类的成员m_pToolBar赋值。

Tags:漂亮 菜单

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接