【问题标题】:Winapi LoadBitmap() is not loading images from my resourcesWinapi LoadBitmap() 没有从我的资源中加载图像
【发布时间】:2013-08-26 05:59:59
【问题描述】:

在我的 .rc 文件中,我添加了一行:

IMG BITMAP "myIMG.bmp" //add to resources

.cpp 文件中的原型:

HBITMAP     Image;

ShowWindow() 之后,我将其加载到内存中:

Image=LoadBitmap(hInstance,"IMG");

WM_CREATE:我把它加载到屏幕上并清除它:

HDC GetDC (hdc);    
HDC newhdc = CreateCompatibleDC(hdc);   
SelectObject(newhdc,Image);
BitBlt(hdc,30,70,491,302,newhdc,0,0,SRCCOPY);
DeleteDC(newhdc);
DeleteObject(Image);
ReleaseDC(hwnd,hdc);

感谢@BeneGal question (founded here) 我创建了一个 MB 来告诉 img 是否未加载:

if(Image == NULL) {
MessageBox(NULL, "NO IMAGE LOADED!", "Error!",  MB_ICONEXCLAMATION | MB_OK);
}

当我在ShowWindow() 之后粘贴上面的代码时,MB 不会出现,当我将它粘贴到WM_CREATE: 时,它会出现。不知道为什么。

编辑:其实我忘了告诉我图像没有出现在我的窗口上,这是主要问题。

【问题讨论】:

    标签: winapi bitmap hbitmap gdi


    【解决方案1】:

    在 WM_CREATE 中加载您的位图,在 WM_PAINT 中使用它。通过 SelectObject 跟踪返回的对象,不要删除 HDC 中仍然选择的对象。做类似的事情http://www.winprog.org/tutorial/bitmaps.html

    【讨论】:

    • 这就是诀窍 :) 谢谢。我还删除了:HDC GetDC (hdc);DeleteObject(Image);ReleaseDC(hwnd,hdc); 并添加了GetObject() 函数,以便我可以获取图像大小:)
    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 2015-03-25
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    相关资源
    最近更新 更多