在 MFC(Microsoft Foundation Classes)中,CMenu::SetMenuItemBitmaps 是 CMenu 类的一个公共方法,用于设置菜单项的位图。

以下是该方法的基本信息:
BOOL SetMenuItemBitmaps(
   UINT nPosition,
   UINT nFlags,
   HBITMAP hBitmapUnchecked,
   HBITMAP hBitmapChecked
);

参数说明:

  •  nPosition: 要设置位图的菜单项的位置索引。

  •  nFlags: 指定位图的标志,如 MF_BYPOSITION、MF_BYCOMMAND 等。

  •  hBitmapUnchecked: 未选中状态下的位图句柄。

  •  hBitmapChecked: 选中状态下的位图句柄。


返回值:

  •  如果成功,则返回非零值;如果失败,则返回零。


示例用法:
CMenu menu;
menu.CreatePopupMenu(); // 创建一个弹出式菜单

HBITMAP hBitmapUnchecked = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_UNCHECKED));
HBITMAP hBitmapChecked = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_CHECKED));

// 设置第一个菜单项的位图
BOOL result = menu.SetMenuItemBitmaps(0, MF_BYPOSITION, hBitmapUnchecked, hBitmapChecked);

if (result)
{
    // 设置位图成功
    // ...
}
else
{
    // 设置位图失败
    // ...
}

// 释放加载的位图资源
::DeleteObject(hBitmapUnchecked);
::DeleteObject(hBitmapChecked);

在上述示例中,首先通过 CreatePopupMenu 创建了一个弹出式菜单对象 menu。然后,使用 LoadBitmap 函数加载了两个位图资源,分别用于未选中状态和选中状态。最后,通过 SetMenuItemBitmaps 方法设置了菜单中第一个菜单项的位图。如果设置成功,返回值为非零,你可以在设置成功后使用 menu 对象进行其他操作。如果设置失败,返回值为零,可以根据需要处理设置失败的情况。


转载请注明出处:http://www.pingtaimeng.com/article/detail/18996/MFC/CMenu