IDB_SMALLMENUHOT
IDB_SMALLMENUDISABLE
当然,要通过资源编辑器的Import功能将他们导入到资源文件中,不过因为是真彩,所以不能用VC的图片编辑器编辑了。
告诉大家个敲门,我是用windows自带的画笔画的:)
*/
/////////////////////////////////////////////////////////////////////////////
// 在ManiFram.cpp 中添加初始化菜单图像列表程序
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// 在CMainFrame::OnCreate中调用菜单图标初始化程序
。。。。。。
InitMenuImage();
。。。。。。
}
/////////////////////////////////////////////////////////////////////////////
HMENU CMainFrame::InitMainFrameMenu()
{
//初始化主菜单
m_menuMainFrame.LoadMenu(IDR_MAINFRAME);
{
// 这只加载图像的一种方法,是一种两步方法,先加载图像列表
m_menuMainFrame.SetImageList(&m_imageMenu);
m_menuMainFrame.SetDisabledImageList(&m_imageMenuDisable);
m_menuMainFrame.SetHotImageList(&m_imageMenuHot);
// 再通过菜单图像索引表为菜单加载图像索引,
m_menuMainFrame.SetImageIndex(nMenuImageIndex,
sizeof(nMenuImageIndex)/sizeof(UINT));
}
// 也可以使用另外一种一步方法加载图像
/*
// 假设MAINFRAM具有m_wndToolBar成员,并且已经设置了真彩位图
// 关于设置工具栏的真彩位图,请参考 http://www.vckbase.com/document/viewdoc/?id=576
// 或者看我的另外一篇文章 《完美实现真彩工具栏》(还没写出来那:))
// 不过源程序里面已经有实现方法了
// 自己看也可以明白的
m_menuMainFrame.LoadToolBar(&m_wndToolBar);
*/
return m_menuMainFrame.Detach();
}
/////////////////////////////////////////////////////////////////////////////
HMENU CMainFrame::InitImageTypeMenu()
{
// 初始化文档模板菜单
m_menuImageType.LoadMenu(IDR_IMAGETYPE);
m_menuImageType.SetImageList(&m_imageMenu);
m_menuImageType.SetDisabledImageList(&m_imageMenuDisable);
m_menuImageType.SetHotImageList(&m_imageMenuHot);
//通过菜单图像索引表为菜单加载图像索引
m_menuImageType.SetImageIndex(nMenuImageIndex,sizeof(nMenuImageIndex)/sizeof(UINT));
return m_menuImageType.Detach();
}
/////////////////////////////////////////////////////////////////////////////
void CMainFrame::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
{
// 记住,顺序一定不能反,因为有些MFC自动添加的菜单是在CMDIFrameWnd::OnInitMenuPopup()
// 中添加的.
// 如果反了,当然就找不到新加入的菜单了
CMDIFrameWnd::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
// 静态函数,看好了,别忘了写CMenuEx啊
CMenuEx::InitPopupMenu(pPopupMenu, nIndex, bSysMenu);
}
/////////////////////////////////////////////////////////////////////////////
void CMainFrame::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
// 都是她惹的祸"CMDIFrameWnd::OnMeasureItem()",不对子菜单项的尺寸进行测量
// 害的我们只好映射这个函数了
CMDIFrameWnd::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
// 静态函数,看好了,别忘了写CMenuEx啊
CMenuEx::MeasureItem(lpMeasureItemStruct);
} 本文章更多内容:<<上一页 - 1 - 2 - 3 - 4 - 5 - 下一页>> |