visual-c++ - MFC:默认情况下使用什么方法将工具栏按钮设置为全部工具栏按钮的子集?
问题描述
我想将所有内容添加menu items
到其中,toolbar
但默认情况下只显示其中的一个子集(无需用户自定义)。这样,所有菜单项旁边都会有图标,但工具栏不会包含很少使用的项目,除非用户添加它们。
如果可能的话,那是怎么做的CMFCToolBar
?
解决方案
如果可能的话,CMFCToolBar 是如何做到的?
您可以在程序的资源脚本中定义任意数量的“虚拟”工具栏资源,如下例所示,ID_DUMMY1
工具栏/位图资源 ID 在哪里(资源编译器和C++ 编译器都必须可用),三个ID 定义图像对应的菜单命令:ID_COMMAND_x
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
适当的协调,该方法仍然可以工作。
推荐阅读
- python - 在 Python 中从 excel 转换为 csv 时向 CSV 添加附加列
- c++ - C++如何在二维向量初始化中创建不同的向量?
- python - 我无法在 Django 中访问我的管理员
- javascript - 如何在数字类型的 html 输入上禁用键盘输入?在 react 或 material-ui 中呢?
- python - 在odoo的controllers.py文件中,如何获取post请求正文中的json字符串?
- javascript - 比在打字稿中使用 setter 更好的方法:声明了私有变量但未读取值问题
- python - 为什么 nltk 字数计数不同于使用正则表达式的字数计数?
- maven - 无法运行maven testng项目
- python - 给定一个未知函数和一个变量的总和,如何求解根?[Scipy][求根]
- google-apps-script - 访问表单时需要从用户那里获取文件名