首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统上下文菜单图标不像WinRAR那样透明

系统上下文菜单图标不像WinRAR那样透明
EN

Stack Overflow用户
提问于 2010-04-05 11:19:25
回答 1查看 2.5K关注 0票数 2

我在系统上下文菜单上添加了一个图标(当鼠标右键单击任何文件/文件夹时,弹出菜单)。但是图标是不透明的(在xp中它是不可察觉的,但是在vista/win7 7中它是清晰可见的)图标下面有一个白色的背景。但是WinRAR或TortoiseSVN图标没有任何白色背景,它们是透明的。

我尝试了以下C++代码:

代码语言:javascript
复制
#define BITMAP_MAIN 201 //in resource.h
BITMAP_MAIN BITMAP "main.bmp" // in .rc file

// showing icon in menu...
HBITMAP imgMain = LoadBitmap( aHinstance, MAKEINTRESOURCE(BITMAP_MAIN) );
SetMenuItemBitmaps ( hSubmenu, uMenuIndex, MF_BYPOSITION, imgMain, imgMain);

main.bmp是16X16

  1. 还没有在非英语OS.

中完全显示图标(.bmp)。

那么,是否有任何特殊的技术来使系统上下文菜单中的图标像WinRAR一样透明?

EN

回答 1

Stack Overflow用户

发布于 2011-02-18 12:57:04

您需要一种特殊的机制,用于在Vista和更高版本中加载图标,因为它们似乎不处理BMP文件中的透明(默认情况下)。您需要检测操作系统:

代码语言:javascript
复制
// Necessary for getting icons in the proper manner.
bool isVistaOrMore() {
  OSVERSIONINFOEX inf;
  SecureZeroMemory(&inf, sizeof(OSVERSIONINFOEX));
  inf.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
  WORD fullver = GetVersionEx((OSVERSIONINFO *)&inf);
  return (fullver >= 0x0600);
}

如果它返回false,那么执行您现在正在做的事情,如果它返回true,则执行类似于以下内容的操作:http://msdn.microsoft.com/en-us/library/bb757020.aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2578051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档