我正在尝试将图标图像添加到我的 win32 应用程序的上下文菜单
这是我的代码
hMenu = LoadMenuIndirect( LoadResourceLang( RT_MENU, resID ) );
hMenu = ::GetSubMenu( hMenu, 0 );
HBITMAP hBitmap = (HBITMAP)LoadImage((HMODULE)g_hInst,MAKEINTRESOURCE(IDB_BM_PAUSE), IMAGE_BITMAP, 16, 16, LR_CREATEDIBSECTION );
SetMenuItemBitmaps( hMenu, 2, MF_BITMAP|MF_BYPOSITION, hBitmap, hBitmap );
::TrackPopupMenu( hMenu, TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, point.x, point.y, 0, m_hWnd, 0 );
菜单首次显示时一切正常。
但是当光标悬停在菜单项上并绘制选择矩形时,位图重绘不正确,透明度被忽略。
以下是屏幕截图:
有什么建议可以解决这个问题吗?
最佳答案
这些位图仅应用于简单的复选标记等,并且必须是单色位图。只要您只需要一种颜色,您的使用似乎就很好。
The selected and clear bitmaps should be monochrome. The system uses the Boolean AND operator to combine bitmaps with the menu so that the white part becomes transparent and the black part becomes the menu-item color. If you use color bitmaps, the results may be undesirable.
理想情况下,您应该动态生成位图,以便它与 CYMENUCHECK 匹配。 .
在 Windows Vista 及更高版本上,也可以 assign a 32bpp image到菜单项而不进行所有者绘制...
关于c - 选择项目后 Win32 菜单位图透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44847043/