问题标签 [cmfctoolbar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
425 浏览

winapi - MFC:如何让 CMFCToolBarComboBoxButton 显示在 CMFCToolBar 上?

我认为很容易的事情我无法上班。如何让 ComboBox 在 上显示CMFCToolBar?这是我所做的不起作用的事情(这意味着它只显示带有圆圈的原始占位符按钮(灰色))。

1 - 我在资源编辑器的工具栏中添加了一个按钮,为其提供了 ID ID_EDIT_FIND_COMBO(我还在其中放置了一个圆圈,只是为了知道它正在使用中)。

2-在CMainFrame我添加ON_REGISTERED_MESSAGE(AFX_WM_RESETTOOLBAR, OnToolbarReset)到消息映射和以下OnToolbarReset()功能:

ReplaceButton()返回 1 说它取代了它。

我错过了什么?

需要明确的是,这是 MS 所说的,即上面所做的:

1 - 为父工具栏资源中的按钮保留一个虚拟资源 ID。有关如何使用 Visual Studio 中的工具栏编辑器创建按钮的详细信息,请参阅工具栏编辑器一文。

2 - 为父工具栏的所有位图中的按钮保留工具栏图像(按钮图标)。

3 - 在处理 AFX_WM_RESETTOOLBAR 消息的消息处理程序中,执行以下步骤:

一个。使用 CMFCToolbarButton 派生类构造按钮控件。

湾。使用 CMFCToolBar::ReplaceButton 将虚拟按钮替换为新控件。您可以在堆栈上构造按钮对象,因为 ReplaceButton 复制按钮对象并维护副本。

蒂亚!!

这是一个不起作用的示例项目。只是工具栏上的按钮,而不是组合框。甚至从 MS 示例中获取代码示例。

示例项目

0 投票
0 回答
47 浏览

winapi - MFC:CMFCToolbar 和 CMFCMenuBar 在 DPI 更改时变黑并失真

有一个使用 MSVS 2017 编译的高 DPI 设置的 MFC 应用程序。在 DPI 更改时,菜单栏和工具栏都搞砸了。它们在某些点与菜单栏上的黑色和部分工具栏相互重叠,在某些点整个菜单栏是黑色的(无法读取文本),工具栏有黑色背景,弹出工具提示有黑色背景。我认为 MFC 默认支持 High-DPI,但是我必须设置什么才能使其正常工作吗?TreeView 和 ListViews 和其他 Vie 都很好,主要是菜单栏和工具栏不能正常工作。我有另一个只有工具栏的应用程序,它看起来更好,但弹出工具提示也是黑色背景。有人知道发生了什么吗?

更多信息:

ID_VIEW_APPLOOK_WINDOWS_7如果我将可视化管理器切换到ID_VIEW_APPLOOK_VS_2008工具栏和菜单栏工作,就会出现我看到的问题。那么是否有哪些“外观”支持 DPI 更改的列表?

蒂亚!!

0 投票
1 回答
137 浏览

winapi - MFC:CMFCMenuBar.SetMenuFont() 不改变字体?

将 MFC 应用程序更改为每显示器 DPI 感知。在WM_DPICHANGED消息中,我想更改 CMFCMenuBar 的字体以正确缩放。所以我补充说:

我确认 logfont.lfHeight 在测试用例中从 -11 变为 -17。我确认SetMenuFont()呼叫返回成功。然而,CMFCMenuBar菜单栏上显示的字体与以前的大小相同。我错过了什么?

蒂亚!!

0 投票
1 回答
102 浏览

winapi - MFC:CMFCDropDownToolBar 除第一个按钮外的所有按钮均为空白

创建了CMFCDropDownToolBar一个CMainFrame::OnCreate

然后剩下的:

就下拉显示按钮而言,一切正常,悬停显示工具提示,但是当您选择通过InsertButton()调用手动添加的按钮之一时,主工具栏上的按钮为空白且没有工具提示。如果我然后返回并选择第一个按钮(已加载资源的一部分),它会显示正确的图标和工具提示。

我做错了什么?

谢谢!!

0 投票
1 回答
129 浏览

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

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

如果可能的话,那是怎么做的CMFCToolBar

0 投票
0 回答
121 浏览

c++ - 如何在垂直停靠的 CMFCToolBar 中显示整个 CMFCToolBarComboBoxButton(不是图标)

我有一个 MFC 应用程序(应用程序类派生自CWinApp),并且有一个工具栏类派生自CToolBar那里。当此工具栏停靠在左侧或右侧时,它仍然显示嵌入其中的整个组合框(不是图标)。

在此处输入图像描述

由于以下 CMyToolBar 类,此行为是可能的:

实现此类代码的所有尝试均无效(创建了具有CWinAppExCMFCToolBar的应用程序,重写了OnResetToolBar,实现了从CMFCToolBar派生的类(具有相同(或多或少)OnPaintOnMoveCheckUpdate,其所有CalcFixedLayout()AdjustSize()等等),但这并没有带来积极的结果)。

如何实现 CMFCToolBar 派生类来实现所需的行为?(或者可能需要做一些其他的事情?)


环境
操作系统 视窗 10 x64
视觉工作室 Microsoft Visual Studio 社区 2019(版本 16.8.3)
Windows SDK 版本 10.0
平台工具集 视觉工作室 2019 (v142)

以下是项目的链接,便于重现错误(带有重现步骤):
带有 CToolBar
的项目 带有 CMFCToolBar 的项目


PS 以下决定不是我需要的。

MFC:如何让 CMFCToolBarComboBoxButton 显示在 CMFCToolBar 上?

如何设置动态创建的 CMFCToolbar 的原始状态?

如何设置动态创建的 CMFCToolbar 的原始状态?

向 CMFCToolbar 添加复选组合框

如何使 CMFCToolBarComboBoxButton 能够在垂直模式下工作?

如何更改 CMFCToolBar 运行时

添加图标时CMFCStatusBar更改高度

如何更改 CComboBox 编辑控件的高度?

如何在 mfc 中设置大小和透明/清除 CMFCToolBar 按钮和图标?

CMFCToolBar & CMFCMenuBar 默认不显示动态项

CMFCToolBarDateTimeCtrl - 外观

如何在 MFC 工具栏中添加自定义控件

如何更改 CMFCToolBar 中的按钮位置?