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