【发布时间】:2020-09-15 00:34:06
【问题描述】:
我想将所有 menu items 添加到 toolbar 但默认情况下只显示其中的一部分(无需用户自定义)。这样,所有菜单项旁边都会有图标,但工具栏不会包含很少使用的项,除非用户添加它们。
如果可能,CMFCToolBar 是如何做到的?
【问题讨论】:
标签: visual-c++ mfc cmfctoolbar
我想将所有 menu items 添加到 toolbar 但默认情况下只显示其中的一部分(无需用户自定义)。这样,所有菜单项旁边都会有图标,但工具栏不会包含很少使用的项,除非用户添加它们。
如果可能,CMFCToolBar 是如何做到的?
【问题讨论】:
标签: visual-c++ mfc 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 类的 static 成员 AddToolBarForImageCollection 来从那些虚拟工具栏。以下将在上述定义的资源中加载这些图像:
CMFCToolBar::AddToolBarForImageCollection(ID_DUMMY1, ID_DUMMY1);
在此之后,每个带有给定命令的菜单项都将显示在虚拟工具栏资源中定义的相关图像。您可以根据需要拥有任意数量的此类工具栏资源,只需为每个资源调用AddToolBarForImageCollection。
注意:虽然我对工具栏和位图资源都使用了 same 资源 ID,但您也可以使用 不同 ID。只要在对 AddToolBarForImageCollection 的调用中给出的参数得到适当的协调,该方法仍然可以工作。
【讨论】: