程序代码如下:#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程序加载位图
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程序加载位图
在加载位图这句代码之后,用GetLastError()看一下返回值是什么?
楼主,这样加载试试