我在系统上下文菜单上添加了一个图标(当鼠标右键单击任何文件/文件夹时,弹出菜单)。但是图标是不透明的(在xp中它是不可察觉的,但是在vista/win7 7中它是清晰可见的)图标下面有一个白色的背景。但是WinRAR或TortoiseSVN图标没有任何白色背景,它们是透明的。
我尝试了以下C++代码:
#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
中完全显示图标(.bmp)。
那么,是否有任何特殊的技术来使系统上下文菜单中的图标像WinRAR一样透明?
发布于 2011-02-18 12:57:04
您需要一种特殊的机制,用于在Vista和更高版本中加载图标,因为它们似乎不处理BMP文件中的透明(默认情况下)。您需要检测操作系统:
// 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
https://stackoverflow.com/questions/2578051
复制相似问题