菜单文字左边加个小图标的问题!
我需要一类似ie的收藏夹的菜单,文字左边显示一个小图标。类似的代码我查到了很多,不过都是ownerdraw形式的菜单,对原来的代码改动非常大,而且如此作的话,程序的兼容性可能收到影响。
windows下此形式的菜单大概有三种,第一种就是上说的,如oicq的菜单也是如此,当某一菜单项被选中时,左边的图像部分并不会反选,网上大部分控件的也是如此
第二种,右键单击任务栏上一运行中程序,弹出的菜单或者是我的电脑窗口里文件的上下文菜单(如装了winzip,就右图标了),该菜单可能是用SetMenuItemBitmaps函数实现的。缺点是选中的图标会被翻转显示,非2色的图表就会很难看,而且,我不知道怎样控制显示大一点的图表,并如何与文字之间的距离大一点。
三,就是ie的收藏夹了菜单,是做得最好的,大家比较看看
那位大虾作过类似的东东,请指点一二,我目前的主要考虑是实现简单一点,由于原来程序较大,我不想在这个问题改动太大。
问题点数:100、回复次数:10Top
1 楼Searph(ViK.Lee)回复于 2000-12-12 20:31:00 得分 10
看MSDN索引Menu sample (popup menus user-defined menus)Top
2 楼lhxx(随风)回复于 2000-12-12 20:32:00 得分 0
有很多这样的类可以用,CSDN上就有吧Top
3 楼Cloudyshadow(云中残影)回复于 2000-12-12 21:42:00 得分 0
上256色的好像有问题?Top
4 楼Kerrie()回复于 2000-12-13 08:20:00 得分 0
to searph: 该例子用的便是setmenuitembitmaps函数
to lhxx: 网上大多是ownerdraw类型,需要自己写drawitem的代码,这样在window采用了不用的外观时,字体,颜色,菜单方面很容易出点小bug
to cloudyshadow:setmenuitembitmaps函数提倡只用2色的图标,因为彩色图标颜色翻转以后
根本就不像个东东,如你装了winzip,可以点某一个文件,弹出的右键菜单winzip一项,便有个图标,你可以看看
不过,如使用setmenuitembitmaps函数,能控制显示图标的大小,调整和文字之间的距离,我也可能采用,毕竟最省时:)Top
5 楼vcbear(http://vcbear.mblogger.cn)回复于 2000-12-13 08:44:00 得分 0
Kerie 是对的 ,就用SetMenuItemBitmap.不过还要请教Kerie,如何设置图标大小,距离
m_pMainMenu = this->GetMenu ();
m_pMenu = m_pMainMenu->GetSubMenu (1);
m_Bmap1.LoadBitmap (IDB_BITMAP1);
m_Bmap2.LoadBitmap (IDB_BITMAP2);
m_pMenu ->SetMenuItemBitmaps (0,MF_BYPOSITION,&m_Bmap1,&m_Bmap2);
return TRUE;Top
6 楼Kerrie()回复于 2000-12-13 10:50:00 得分 0
to vcbear:
我正是不会,所以才问呀!:)
使用ownerdraw,就得自己写drawitem,不是用ownerdraw,根本不知道从哪儿能塞进几句代码让windows把菜单拉长一点,什么OnMeasureItem,OnDrawItem根本不会被调用。
哎,我脑袋都大了
Top
7 楼Cloudyshadow(云中残影)回复于 2001-01-10 20:20:00 得分 10
有现成的控件吗?我觉得要是效果好,还是得自己drawTop
8 楼newx(Royale with Cheese)回复于 2001-01-10 23:44:00 得分 0
如果真是“OnMeasureItem,OnDrawItem根本不会被调用”
很可能是因为你没有在 MENU 的资源描述中加 MFT_OWNERDRAW 风格!Top
9 楼adrianx(蓝色心情)回复于 2001-01-11 00:22:00 得分 80
to kerrie :
我的类要不要?Top
10 楼Kerrie()回复于 2001-01-11 22:41:00 得分 0
to newx:
我的意思是在不使用自绘菜单的前提下(不过写完后发现不可能:))
to adrianx:
谢谢,从网上找的几份代码都不如意,没办法,我自己已经动手写了ownerdraw菜单类了。Top




