程序代码如下:#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,一个是位图名,按道理说应该是一样,可我都试了也不行大神们啊,求助。BitmapLoadBitmapWin32程序加载位图

解决方案 »

  1.   

    断点调试下,看看是否进入到LoadBitmap的那个case里面。
      

  2.   

    用位图名的时候,写位图的完整路径!
    在加载位图这句代码之后,用GetLastError()看一下返回值是什么?
      

  3.   

    hBitmap=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP1));
    楼主,这样加载试试
      

  4.   

    LoadBitmap(..., MAKEINTRESOURCE(IDB_BITMAP));
      

  5.   

    MAKEINTRESOURCE(ID)你最好导入资源时把你的ID,改掉,这样方便以后能看懂。