我想将所有菜单项
添加到工具栏
,但默认情况下仅显示其中的子集(无需用户自定义)。这样,所有菜单项旁边都会有图标,但工具栏不会包含很少使用的项目,除非用户添加它们。
如果可能的话,如何使用 CMFCToolBar
完成此操作?
最佳答案
If possible, how is that done with 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
类的静态成员 AddToolBarForImageCollection
从这些虚拟工具栏加载图像。以下将在上面定义的资源中加载这些图像:
CMFCToolBar::AddToolBarForImageCollection(ID_DUMMY1, ID_DUMMY1);
此后,具有给定命令的每个菜单项将显示虚拟工具栏资源中定义的关联图像。您可以根据需要拥有任意多个此类工具栏资源,只需为每个资源调用 AddToolBarForImageCollection
即可。
注意:虽然我对工具栏和位图资源使用了相同资源ID,但您也可以使用不同 ID。只要正确协调 AddToolBarForImageCollection
调用中给出的参数,该方法仍然有效。
关于visual-c++ - MFC:默认使用什么方法将工具栏按钮设置为总工具栏按钮的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63893468/