【问题标题】:Failure for Gdiplus::Bitmap::FromHICONGdiplus::Bitmap::FromHICON 失败
【发布时间】:2017-08-23 19:06:40
【问题描述】:

我正在尝试通过调用Gdiplus::Bitmap::FromHICONHICON 转换为Gdiplus::Bitmap,如下所示。

我通过调用LoadIcon 创建了一个Windows 图标,并通过在屏幕上绘制来验证该图标是否有效。

令人惊讶的是,我仍然得到了一个NULL 指针。我重新访问了win32 documents,但找不到我缺少的东西。

HICON hIcon = LoadIcon(NULL, IDI_WINLOGO);
assert( hIcon != nullptr ); // passed

Gdiplus::Bitmap *pIcon = Gdiplus::Bitmap::FromHICON(hIcon);

assert( pIcon != nullptr ); // failed

有人知道吗?谢谢:)

【问题讨论】:

  • 如果你想知道 - 打电话给Image::GetLastStatus - 这可能会给你提示

标签: c++ windows winapi bitmap gdi+


【解决方案1】:

您需要先使用GdiplusStartup函数初始化GDI+引擎:

HICON hIcon = LoadIcon(NULL, IDI_WINLOGO);
assert(hIcon != nullptr); // passed
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Gdiplus::Bitmap *pIcon = Gdiplus::Bitmap::FromHICON(hIcon);
assert(pIcon != nullptr); // now OK
GdiplusShutdown(gdiplusToken);

【讨论】:

  • 太棒了,我没有意识到有启动和关闭方法。
  • 只是好奇,HICON 的高度会根据hbmColor 是否存在(彩色或单色)而有所不同。 Gdiplus::Bitmap::FromHICON 处理得当吗?
  • @hackjutsu 你应该把它作为一个单独的问题发布。
猜你喜欢
  • 2011-03-21
  • 2010-12-28
  • 2019-01-03
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多