代码之家  ›  专栏  ›  技术社区  ›  aJ.

LoadBitMap()API是否会产生绘制问题?

  •  3
  • aJ.  · 技术社区  · 14 年前

    我有一个传统的系统 C++ , MFC 我在检查一段代码 LoadBitmap() 被替换为 LoadImage() 应用程序编程接口。代码里写的评论说 加载位图() 使用来自内核内存的分页池,如果使用量达到最大限制,则会弹出绘制问题。所以 LoadImage

    我在谷歌上搜索了一下,但没有得到多少信息。当我检查 MSDN 请注意,不推荐使用LoadBitmap来加载OEM位图,它只支持向后兼容

    1有什么问题吗 加载位图() 应用程序编程接口?为什么我们更喜欢 加载位图() ? 2是什么 OEM bitmaps ? 如果我加载普通BMP有什么问题吗 LoadBitmap ?

    1 回复  |  直到 14 年前
        1
  •  3
  •   JaredReisinger    14 年前

    LoadBitmap()将只创建与显示兼容的位图,而不是与设备无关的位图(DIB)。而且,作为 LoadBitmap() documentation 它本身在顶部说,“这个函数已经被 LoadImage 功能”。LoadBitmap()仍然存在几乎令人惊讶,因为我认为它已经被LoadImage()取代了 从Windows 95开始! (这只是为了说明要放弃向后兼容性是多么困难!)

    习惯于 由Windows用来绘制UI的各个部分,但现在由处理 DrawFrameControl() . 同样,OEM位图是一个古老的事物,“新”行为已经存在很长时间了。

    LoadImage(hInstance, lpBitmapName, IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
    

    在新代码中,您可能需要一个与设备无关的位图,在这种情况下 使用LoadImage(),最后一个参数应该是“LR峎CREATEDIBSECTION”。在您使用遗留代码的情况下,坚持使用“LR廑u DEFAULTCOLOR”可能更安全。