问题描述
我想将所有menu items
添加到toolbar
,但默认情况下仅显示其中一部分(无需用户自定义)。这样,所有菜单项旁边都会有图标,但是除非用户添加它们,否则工具栏将不会包含很少使用的项。
如果可能的话,如何使用CMFCToolBar
完成操作?
解决方法
如果可能的话,如何使用CMFCToolBar完成该操作?
您可以在程序的资源脚本中定义任意数量的“虚拟”工具栏资源,如以下示例所示,其中ID_DUMMY1
是工具栏/位图资源ID(必须资源编译器和 C ++编译器)和三个ID_COMMAND_x
ID定义了图像所对应的菜单命令:
ID_DUMMY1 BITMAP L"DummyToolbar.bmp" // 16 x 48 bitmap for three 'buttons
ID_DUMMY1 TOOLBAR 16,16
{
BUTTON ID_COMMAND_A // Three commands corresponding to the three button
BUTTON ID_COMMAND_B // images in the above bitmap
BUTTON ID_COMMAND_C
}
然后,在您的程序中(通常是在初始化主框架窗口之后),可以调用CMFCToolBar
类的{em> static 成员AddToolBarForImageCollection
从这些虚拟工具栏加载图像。以下将这些图像加载到上面定义的资源中:
CMFCToolBar::AddToolBarForImageCollection(ID_DUMMY1,ID_DUMMY1);
此后,具有给定命令的每个菜单项将显示在虚拟工具栏资源中定义的关联图像。您可以根据需要拥有任意数量的此类工具栏资源,只需为每个工具栏调用AddToolBarForImageCollection
。
注意:尽管我为工具栏和位图资源都使用了相同资源ID,但是您也可以使用不同 ID。只要对AddToolBarForImageCollection
的调用中给出的参数正确协调,该方法仍将起作用。