为什么InvalidateRect刷新后,位图就不显示了呢?急急急,新手刚入门,老师说必须用win32 api来编。
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam){staticintcxCli...
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static int cxClient, cyClient ;
HDC hdc;
static int i=1;
static HDC hdcmem;//wo kao,wei shen me???!!!
PAINTSTRUCT ps;
HBITMAP hbm;
switch (message)
{
case WM_SIZE:
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
break ;
case WM_CREATE:
hdc=GetDC(hwnd);
hdcmem=CreateCompatibleDC(hdc);
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
if(i==1)
{
hbm=(HBITMAP)LoadImage(NULL,"1.bmp",IMAGE_BITMAP,cxClient,cyClient,LR_LOADFROMFILE);//加载一张指定了路径的bmp图片,此图片大小为63*128,用这个函数之前需要知道这张图的大小,分别填写在第4、5个参数里
}
else if(i==2)
{
hbm=(HBITMAP)LoadImage(NULL,"2.bmp",IMAGE_BITMAP,cxClient,cyClient,LR_LOADFROMFILE);
}
。。。。。
else if(i==10)
{
hbm=(HBITMAP)LoadImage(NULL,"10.bmp",IMAGE_BITMAP,cxClient,cyClient,LR_LOADFROMFILE);
}
SelectObject(hdcmem,hbm);
BitBlt(hdc,0,0,cxClient,cyClient,hdcmem,0,0,SRCAND);//显示这张图
EndPaint(hwnd,&ps);
i++;
if(i==11) i=1;
Sleep(1000);
InvalidateRect(hwnd,NULL,1);
break;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
break;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}是打算轮流显示营造出动态效果的,但刷新一次后就不显示图了,求大神帮看看啊,急急急,无比感激谢谢。 展开
{
static int cxClient, cyClient ;
HDC hdc;
static int i=1;
static HDC hdcmem;//wo kao,wei shen me???!!!
PAINTSTRUCT ps;
HBITMAP hbm;
switch (message)
{
case WM_SIZE:
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
break ;
case WM_CREATE:
hdc=GetDC(hwnd);
hdcmem=CreateCompatibleDC(hdc);
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
if(i==1)
{
hbm=(HBITMAP)LoadImage(NULL,"1.bmp",IMAGE_BITMAP,cxClient,cyClient,LR_LOADFROMFILE);//加载一张指定了路径的bmp图片,此图片大小为63*128,用这个函数之前需要知道这张图的大小,分别填写在第4、5个参数里
}
else if(i==2)
{
hbm=(HBITMAP)LoadImage(NULL,"2.bmp",IMAGE_BITMAP,cxClient,cyClient,LR_LOADFROMFILE);
}
。。。。。
else if(i==10)
{
hbm=(HBITMAP)LoadImage(NULL,"10.bmp",IMAGE_BITMAP,cxClient,cyClient,LR_LOADFROMFILE);
}
SelectObject(hdcmem,hbm);
BitBlt(hdc,0,0,cxClient,cyClient,hdcmem,0,0,SRCAND);//显示这张图
EndPaint(hwnd,&ps);
i++;
if(i==11) i=1;
Sleep(1000);
InvalidateRect(hwnd,NULL,1);
break;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
break;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}是打算轮流显示营造出动态效果的,但刷新一次后就不显示图了,求大神帮看看啊,急急急,无比感激谢谢。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询