visual-c++ - MFC:默认使用什么方法将工具栏按钮设置为总工具栏按钮的子集?

标签 visual-c++ mfc cmfctoolbar

我想将所有菜单项添加到工具栏,但默认情况下仅显示其中的子集(无需用户自定义)。这样,所有菜单项旁边都会有图标,但工具栏不会包含很少使用的项目,除非用户添加它们。

如果可能的话,如何使用 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/

相关文章:

c++ - 错误 LNK2019 : unresolved external symbol "" referenced in function

msbuild - msbuild比devenv慢

c++ - 在 C++ (MFC) 中连接资源文件中的字符串和常量

c++ - 为什么 CMFCToolbar 中的自定义按钮在大图标上很难看

c++ - 如何将 vector<Dmatch> 写入 FileStorage

c++ - cplusplus.com 错了吗?指针和字符串文字

C++:MsiOpenDatabase 失败并出现错误 110 0x6e ERROR_OPEN_FAILED 仅当提升/管理时

c++ - 如何在mfc项目中创建新窗口

c++ - 如何在 CMFCMenuBar 及其项目中支持辅助功能