LoadBitmap加载位图失败

lxtx6905 2013-05-20 10:59:02
程序代码如下:

#include<windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);


int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow)
{
TCHAR szClassName[] =TEXT("扫雷");
HWND hwnd;
WNDCLASS wnd;
MSG msg;
wnd.cbClsExtra=0;
wnd.cbWndExtra=0;
wnd.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wnd.hCursor=LoadCursor(NULL,IDC_ARROW);
wnd.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wnd.hInstance=hInstance;
wnd.lpfnWndProc=WndProc;
wnd.lpszClassName=szClassName;
wnd.lpszMenuName=NULL;
wnd.style=CS_VREDRAW|CS_HREDRAW;
if(!RegisterClass(&wnd))
{
MessageBox(hwnd,TEXT("注册窗口失败"),TEXT("警告"),MB_ICONERROR);
return 0;
}
hwnd=CreateWindow(szClassName,TEXT("扫雷"),WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,400,400,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg,NULL,NULL,0))
{

TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{

HINSTANCE hInst;//声明一个全局的实例句柄,用来保存主窗口的实例
HDC hdc,hdcMem;
PAINTSTRUCT ps;
static HBITMAP hBitmap;
BITMAP bitmap;
static int height;
static int width;
switch (message)
{
case WM_CREATE:
hInst=((LPCREATESTRUCT)lParam)->hInstance; hBitmap=LoadBitmap(hInst,"IDB_BITMAP1");//hBitmap=LoadBitmap(hInst,"410.BMP");
if(hBitmap==NULL)
MessageBox(hwnd,TEXT("窗口生成失败"),TEXT("失败"),MB_OKCANCEL);
GetObject(hBitmap,sizeof(HBITMAP),&bitmap);
width=bitmap.bmWidth;
height=bitmap.bmHeight;
return 0;
case WM_LBUTTONDOWN:
MessageBox(hwnd,TEXT("窗口生成成功"),TEXT("恭喜"),MB_OKCANCEL);
return 0;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
hdcMem=CreateCompatibleDC(hdc);
SelectObject(hdcMem,hBitmap);
BitBlt(hdc,0,0,width,height,hdcMem,0,0,SRCCOPY);
DeleteDC(hdcMem);
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
DeleteObject(hBitmap);
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
break;
}
}
我都检查了嗯便了也找不出来,另外hBitmap=LoadBitmap(hInst,"IDB_BITMAP1");//hBitmap=LoadBitmap(hInst,"410.BMP")其实一个是资源的ID,一个是位图名,按道理说应该是一样,可我都试了也不行。。。。。。大神们啊,求助。。。。
...全文
355 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
begodliker 2013-05-21
  • 打赏
  • 举报
回复
hBitmap=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP1)); 楼主,这样加载试试
liuli7786 2013-05-21
  • 打赏
  • 举报
回复
用位图名的时候,写位图的完整路径! 在加载位图这句代码之后,用GetLastError()看一下返回值是什么?
rxguoblp 2013-05-21
  • 打赏
  • 举报
回复
断点调试下,看看是否进入到LoadBitmap的那个case里面。
  • 打赏
  • 举报
回复
MAKEINTRESOURCE(ID)你最好导入资源时把你的ID,改掉,这样方便以后能看懂。
Eleven 2013-05-21
  • 打赏
  • 举报
回复
LoadBitmap(..., MAKEINTRESOURCE(IDB_BITMAP));
lxtx6905 2013-05-21
  • 打赏
  • 举报
回复
谢谢各位的指导,我再试试。。。。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧