CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

菜单文字左边加个小图标的问题!

楼主Kerrie()2000-12-12 19:20:00 在 VC/MFC / 基础类 提问

我需要一类似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

相关问题

  • 如何在菜单中的文字前显示小图标
  • 怎样在菜单工具条图标下显示文字?
  • 如何更改MultiView中菜单最左边的图标?
  • 如何在菜单的左边加上一个图标。
  • 菜单项左边的图标可如何或取?
  • 如何在下拉菜单中的文字前添加一个图标?
  • 请问怎么在子菜单的文字前面加上图标??
  • 如何在toolbarbutton的文字左边添加小图标
  • 菜单的图标
  • 哪里有QQ那样的右下角菜单,有一个渐变的文字条及菜单图标?

关键词

  • 函数
  • 文字
  • 代码
  • winzip
  • 菜单
  • 图标
  • ownerdraw
  • setmenuitembitmaps
  • bmap
  • 程序

得分解答快速导航

  • 帖主:Kerrie
  • Searph
  • Cloudyshadow
  • adrianx

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo