【问题标题】:MFC Toolbar icon not visible in Visual Studio 2015MFC 工具栏图标在 Visual Studio 2015 中不可见
【发布时间】:2017-01-31 09:08:30
【问题描述】:

我们有 MFC 应用程序,它有工具栏,工具栏在 Visual Studio 2010 中使用 bmp 32 色资源文件。此应用程序在 VS2010 中运行良好。

在 Visual Studio 2015 中转换此应用程序后,工具栏图标不可见。 Visual Studio 2015 显示格式属性 32bpp BGR

VS2015 位图编辑器是否有任何变化,或者我在这里缺少一些属性设置?

【问题讨论】:

  • 在我看来,转换肯定是搞砸了!我认为您应该使用旧版本的 GIMP 打开它。我记得有这样的问题! VC++ 应用程序只支持一种非常特殊的透明位图格式!明天我可能会给你更详细的指导!
  • 你还有未转化的吗?您可以尝试用它们覆盖新的吗?
  • 仍然有同样的问题。
  • 尝试在 GIMP 2.6.0 上打开图像(新版本对我来说失败了!)并导出为 BMP。在meanwhileblog.files.wordpress.com/2016/03/gimp-ex.png 对话框中选择选项 X8R8G8B8。
  • 我做了你提到的所有步骤,但仍然面临同样的问题。

标签: c++ visual-studio-2010 visual-studio-2015 mfc


【解决方案1】:

在创建 MFC 可接受的低资源版本的工具栏后,我们能够解决此问题。我们创建了低资源 id,它应该是指工具栏资源,该工具栏资源的布局与原始工具栏的命令 id 相同,但参考 MFC 将接受的低分辨率 bmp 文件。

在 MainFrame::OnCreate 中更改以下代码

if (!m_wndToolBar.Create(this, WS_CHILD | WS_VISIBLE | CBRS_FLOATING, IDR_LOWRES_RES_ID) || !m_wndToolBar.LoadToolBar(IDR_LOWRES_RES_ID))
{
    TRACE0("Failed to create add fields bar\n");
    return -1;      // fail to create
}
//Added

//Replace imagelist with 32 bit bmp

CToolBarCtrl& ctl = m_wndToolBar.GetToolBarCtrl();

CImageList *pList = ctl.GetImageList();

// Delete low res image list
pList->DeleteImageList();

pList->Create(34, 34, ILC_COLOR32, 32, 0);

ctl.SetImageList(pList);

ctl.AddBitmap(32, IDR_ADD_HIGH_RES_ID);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多