gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:39:07 26 4
gpt4 key购买 nike

我在系统上下文菜单中添加了一个图标(当我们用鼠标右键单击任何文件/foler 时弹出的菜单)。但是图标不是透明的(在xp下不明显,在vista/win7下清晰可见)图标下方有白色背景。但是 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]

  1. 此外,图标 (.bmp) 在非英文操作系统中未完全显示。

那么有没有什么特殊的技巧可以像WinRAR一样让系统上下文菜单中的图标透明呢?

最佳答案

在 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

关于c++ - 系统上下文菜单图标不像 WinRAR 那样透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com