我有一个对话框类型的应用程序,其中包含一个 MFC EditBrowse 控件。此控件在右侧包含一个文件夹/放大镜图标,用户应该单击该图标以弹出文件夹浏览器。
该文件夹/放大镜图标在 Visual Studio 的对话框编辑器中正确显示,但在运行时它显示为一个普通的平面按钮。否则它的行为是正确的 - 也就是说,当用户单击“确定”时,浏览器弹出窗口会弹出并显示所选文件夹。
当使用调试器运行时,VS 输出窗口中会显示一条消息,提示“无法加载位图:4299”。该消息显示在我的 OnInitDialog() 中的 CDialogEx::OnInitDialog() 行之后。
我已经编写了测试程序,它们可以正确显示图标。我还在原来的程序中添加了额外的 EditBrowse 控件,但它们遇到了同样的问题,只是添加了另一行“无法加载位图”。我还添加了其他 MFC 控件,其中一些控件也不显示其图标(或其他内容)。
我通过从我的 OnInitDialog 调用 EnableBrowseButton() 和 EnableFolderBrowswButton() 设法稍微影响了这个问题。如果这样做,我会得到一个看起来像 3 个水平点的图标:
哪个更好,但我更喜欢文件夹/放大镜图标。
这是一个足够复杂的应用程序,我不想从头开始重写它,而且我想了解发生了什么。我相当确定这是在开发应用程序时添加/删除控件的结果,但我不知道从哪里开始追踪出现问题的地方。
关于如何调试这个的想法?顺便说一句,这是 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/