我正在尝试将图标图像添加到我的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 );
首次显示菜单时,一切正常。
但是当光标悬停在菜单项上并且绘制了选择矩形时,位图重绘不正确,透明度将被忽略。
以下是截图:
有任何建议如何解决这个问题?
答案 0 :(得分:1)
这些位图仅用于简单的复选标记等,必须为单色位图。只要你只需要一种颜色,你的用法就好了。
The selected and clear bitmaps should be monochrome。系统使用布尔AND运算符将位图与菜单组合在一起,使白色部分变为透明,黑色部分变为菜单项颜色。如果使用彩色位图,则结果可能不合适。
理想情况下,您应该动态生成位图,使其与CYMENUCHECK匹配。
在Windows Vista及更高版本中,也可以assign a 32bpp image到菜单项而不进行所有者绘制......