决赛预赛:哪位好心人帮帮我呀(C++)

来源:百度文库 编辑:高校问答 时间:2024/05/11 01:03:53
使用VC++编写一个Windows程序
要求:在窗体上显示一副图片,按下键盘上的W、S、A、D时,使图片分别朝上、下、左、右4个方向移动;
我编了一个程序,按一个键就会重画一次窗口,但是它以前的窗口就没有被清除,所以我按几次键,屏幕上就会出现重叠的几附图。
这是程序的重画部分:
case WM_KEYUP:
InvalidateRect(hwnd,NULL,FALSE); //强制对窗口进行重绘
break;
case WM_CHAR:

break;

case WM_CREATE:
hdc=GetDC(hwnd);
hdcmem=CreateCompatibleDC(hdc);
ReleaseDC(hwnd,hdc);
break;

case WM_PAINT: //处理绘图消息.

hdc=BeginPaint(hwnd,&ps); //得到设备环境句柄
SelectObject(hdcmem,hBm);
BitBlt(hdc,nx,ny,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);
EndPaint(hwnd,&ps);
break;
case WM_DESTROY: //处理关闭窗口信息.
PostQuitMessage(0); //向应用程序发送WM_QUIT消息.
return 0;
default:
return(DefWindowProc(hwnd,message,wParam,lParam));
}
return 0;
}
大家帮我找找错误呀,谢谢了