visual-studio - MFC EditBrowse 控件在运行时不显示文件夹图标

标签 visual-studio mfc

我有一个对话框类型的应用程序,其中包含一个 MFC EditBrowse 控件。此控件在右侧包含一个文件夹/放大镜图标,用户应该单击该图标以弹出文件夹浏览器。

screen grab of what it should look like

该文件夹/放大镜图标在 Visual Studio 的对话框编辑器中正确显示,但在运行时它显示为一个普通的平面按钮。否则它的行为是正确的 - 也就是说,当用户单击“确定”时,浏览器弹出窗口会弹出并显示所选文件夹。

当使用调试器运行时,VS 输出窗口中会显示一条消息,提示“无法加载位图:4299”。该消息显示在我的 OnInitDialog() 中的 CDialogEx::OnInitDialog() 行之后。

我已经编写了测试程序,它们可以正确显示图标。我还在原来的程序中添加了额外的 EditBrowse 控件,但它们遇到了同样的问题,只是添加了另一行“无法加载位图”。我还添加了其他 MFC 控件,其中一些控件也不显示其图标(或其他内容)。

我通过从我的 OnInitDialog 调用 EnableBrowseButton() 和 EnableFolderBrowswButton() 设法稍微影响了这个问题。如果这样做,我会得到一个看起来像 3 个水平点的图标:

enter image description here

哪个更好,但我更喜欢文件夹/放大镜图标。

这是一个足够复杂的应用程序,我不想从头开始重写它,而且我想了解发生了什么。我相当确定这是在开发应用程序时添加/删除控件的结果,但我不知道从哪里开始追踪出现问题的地方。

关于如何调试这个的想法?顺便说一句,这是 VS 2010。

最佳答案

CMFCEditBrowseCtrl 使用可视化管理器从 MFC 资源加载位图。

此资源加载到 "afxribbon.rc"

确保以下这些行包含在主 *.rc 文件中(这是 VS 向导创建 *.rc 文件的方式)

#if !defined(_AFXDLL)
#include "afxribbon.rc"   // MFC ribbon and control bar resources
#endif

(我猜你可以省略 #if/end 语句,但它的存在可能是有原因的)

或者,CMFCEditBrowseCtrl::SetBrowseButtonImage可用于分配用户图标。

关于visual-studio - MFC EditBrowse 控件在运行时不显示文件夹图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60290995/

相关文章:

visual-studio - 如何使用 ProjectTypeGuids 349c5851-65df-11da-9384-00065b846f21 打开 csproj?

c++ - 从功能区隐藏、显示、添加或删除按钮?

visual-studio - 如何为 DUB 包生成 PDB 文件?

c++ - 在 visual studio 中为 usertype.dat 中的关键字赋值?

multithreading - 如何从另一个线程通知 CDialog 对象有关已完成的任务?

c++ - 如何将图像,表格和纯文本导出到MS Word?

c++ - 如何从头开始启动 MFC 应用程序?

c++ - CComboBox.GetItemData 的倒数是多少?

c# - Visual Studio 2010 的问题

sql-server - 如何更改 SSRS 中的部署凭据?