|
完成的功能是想让多个图片轮流的显示在窗口上
但是只能显示第一个图片,就不动了
大家帮我看看啊
#define IDTIMER 100
static int WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
static BITMAP s_bmp;
static char bmpno[] = "0.jpg";
bmpno[0] = '0';
RECT rc = {23,12,321,240};
switch (message) {
case MSG_CREATE:
SetTimer(hWnd, IDTIMER, 100);
return 0;
case MSG_ERASEBKGND:
bmpno[0] = bmpno[0]+1;
hdc = BeginPaint (hWnd);
if(LoadBitmapFromFile(HDC_SCREEN, &s_bmp, bmpno));
FillBoxWithBitmap (hdc, 23, 12, 321, 240, &s_bmp);
EndPaint(hWnd, hdc);
return 0;
case MSG_TIMER:
InvalidateRect (hWnd, &rc, TRUE);
return 0;
case MSG_CLOSE:
UnloadBitmap(&s_bmp);
DestroyMainWindow (hWnd);
PostQuitMessage (hWnd);
return 0;
default:
return DefaultMainWinProc(hWnd, message, wParam, lParam);
}
return 0;
}
===========================================================
这个是修正后的一个测试程序,48 ,57是ASIC码
但是运行后显示 “浮点数例外”,大家帮我分析一下吧 小弟先谢了~~
char bmpno[] = "0.jpg";
bmpno[0] = 48;
static int WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
static BITMAP s_bmp;
RECT rc = {23,12,321,240};
switch (message) {
case MSG_CREATE:
SetTimer(hWnd, IDTIMER, 100);
break;
case MSG_PAINT:
if(LoadBitmapFromFile(HDC_SCREEN, &s_bmp, bmpno))
{ return -1; }
hdc = BeginPaint (hWnd);
FillBoxWithBitmap (hdc, 23, 12, 321, 240, &s_bmp);
EndPaint(hWnd, hdc);
break;
case MSG_TIMER:
if(wParam == IDTIMER)
{ bmpno[0] ++;
LoadBitmapFromFile(HDC_SCREEN, &s_bmp, bmpno);
GetClientRect(hWnd, &rc);
FillBoxWithBitmap (hdc, 23, 12, 321, 240, &s_bmp);}
if(bmpno[0] == 57)
{
KillTimer(hWnd, IDTIMER);
UnloadBitmap(&s_bmp);
DestroyMainWindow (hWnd);
PostQuitMessage (hWnd);
}
break;
case MSG_CLOSE:
KillTimer(hWnd, IDTIMER);
UnloadBitmap(&s_bmp);
DestroyMainWindow (hWnd);
PostQuitMessage (hWnd);
break;
default:
return DefaultMainWinProc(hWnd, message, wParam, lParam);
}
return 0;
} |
|