MFC:默认情况下,使用哪种方法将工具栏按钮设置为全部工具栏按钮的子集?

问题描述

我想将所有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的调用中给出的参数正确协调,该方法仍将起作用。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...