在资源中定义了一个IDS_BITMAP1 的位图,用静态控件的时候,图象未显示。源代码如下:只能显示一个方框,未能显示图象,但图象的大小可以得出,帮帮忙,不胜感激!
代码:
#include <windows.h>
#include "resource.h"
#include <stdio.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE hinst;
HWND hwndstatic;
char lpsztext[]="";
HBITMAP hbm;
BITMAP bm;
HDC hdc;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
WNDCLASS wndclass;
HWND hwnd;
MSG message;
char lpszclassname[]="静态图片";
char lpsztitlename[]="静态图片事例程序";
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,MAKEINTRESOURCE(IDI_ICON1));
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WndProc;
wndclass.lpszClassName=lpszclassname;
wndclass.lpszMenuName=NULL;
wndclass.style=0;
if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;
}
hinst=hInstance;
hwnd=CreateWindow(lpszclassname,lpsztitlename,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
hbm=LoadBitmap(hInstance,MAKEINTRESOURCE(IDS_BITMAP1));
GetObject(hbm,sizeof(BITMAP),(LPVOID)&bm);
sprintf(lpsztext,"该位图的高度为%d,宽度为%d",bm.bmWidth,bm.bmHeight);
ShowWindow(hwnd,nShowCmd);
UpdateWindow(hwnd);

while(GetMessage(&message,NULL,0,0))
{

TranslateMessage(&message);
DispatchMessage(&message);

}
return message.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{

switch(message)
{
case WM_CREATE:
hwndstatic=CreateWindow("STATIC","CUS3",WS_CHILD|WS_VISIBLE|WS_BORDER|SS_BITMAP|SS_NOTIFY,30,30,200,200,hwnd,(HMENU)IDS_BITMAP1,hinst,NULL);
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDS_BITMAP1:
DestroyWindow(hwndstatic);
hdc=GetDC(hwnd);
TextOut(hdc,130,100,lpsztext,strlen(lpsztext));
ReleaseDC(hwnd,hdc);
break;
}
break;
case WM_DESTROY:
DeleteObject(hbm);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}