CMFCMenuBar 显示错误的工具提示

Posted

技术标签:

【中文标题】CMFCMenuBar 显示错误的工具提示【英文标题】:CMFCMenuBar showing wrong tooltips 【发布时间】:2017-08-11 14:08:01 【问题描述】:

我有一个启用了 Feature Pack 的 SDI 项目。 该程序有一个菜单栏(CMFCMenuBar)和四个工具栏(CMFCToolBar)。

工具栏正常工作:我为 TB 的按钮分配了等效菜单项的 ID,并且我在菜单声音上看到了 TB 图像。

现在,当我将鼠标悬停在一些菜单声音上时(总是一样),我得到了一些随机的工具提示文本,我说随机是因为我搜索了我的项目,并且我的解决方案的任何部分都没有写这两个字符串,因为示例:

我最近对 ​​resource.h 文件进行了一些手动修改,弄乱了一些 id...这可能是个问题?

另外,我试图通过告诉 Menu 不显示工具提示来解决问题:

dwStile = m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC/* | CBRS_TOOLTIPS*/ | CBRS_FLYBY;
m_wndMenuBar.SetPaneStyle(dwStile);

但是,正如您在上面的图片中看到的那样,我根本没有得到任何结果。

知道我可以在哪里查找错误吗?

【问题讨论】:

在resource.h中检查你的ID值 @VuVirt 我到底应该寻找什么? 例如重叠的 ID 值 所有的 ID 都是 unque 的,已经检查过了。 如果您有任何建议,请查看我的回答。 【参考方案1】:

当您在资源 IDE 中时,您可以指定弹出文本是什么:

在上面的例子中我使用了:

打开对话以管理和修改谈话分配和各种约会\n管理谈话分配

注意到 \n 的用法了吗?这就是将两个文本字符串组件分开的原因。因此,在最终应用中:

因此,您应该能够在 IDE 编辑器中正确指定所有文本。

【讨论】:

不是这个。例如,我有语音“Proiezione \ Configura”,它具有唯一 ID,提示设置为“Apre la Finestra di configurazione della proiezione\nConfigura Proiezione”,结果相同:“Conferma Generazione”。 如果您愿意,请查看我的回答。【参考方案2】:

我解决了这个问题。 我发现“随机字符串”的第二部分(在 \n 之后)存储在我的程序使用的 DLL 的资源中。虽然 dll 对话框的 ID 在 [2000, 2500] 范围内,但 3 个字符串的 ID 为:1、2、3。

我不记得我在哪里读到这么低的 id 可能很危险,所以我手动将其更改为 3000、3001 和 3002,这解决了问题。

即使这可行,我也想知道原因,因此请随时编辑答案并添加完整的解决方案。

【讨论】:

以上是关于CMFCMenuBar 显示错误的工具提示的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 验证:如何不显示错误?或如何将错误显示为工具提示?

如何在本机反应中使用 TextInput 显示工具提示错误

为啥 WPF 样式在工具提示中显示验证错误适用于文本框但对组合框无效?

如何在 CMFCMenuBar 及其项目中支持可访问性

销毁 CMFCMenuBar 和 CMFCToolBar 并重新创建它们的正确方法是啥?

火狐登录路由器,未输入密码就提示用户名密码错误