#include "myWin.h" static BOOL moveRight=TRUE; static int X=0, dX=5; void procCreate(HWND hw, WPARAM wp,LPARAM lp){ SetTimer(hw,1,10,NULL); } void procTimer(HWND hw, WPARAM wp,LPARAM lp){ RECT rctD; GetClientRect(hw,&rctD); if (X+50>=rctD.right) moveRight=FALSE; else if(X<=0) moveRight=TRUE; if(moveRight) X +=dX; else X -= dX; InvalidateRect(hw,NULL,TRUE); } void procPaint(HWND hw, WPARAM wp,LPARAM lp){ PAINTSTRUCT ps; HDC hdc=BeginPaint(hw,&ps); SelectObject(hdc, GetStockObject(BLACK_BRUSH)); Ellipse(hdc,X,50,X+50,100); EndPaint(hw,&ps); } LRESULT CALLBACK WndProc (HWND hw, UINT msg, WPARAM wp,LPARAM lp){ switch(msg){ case WM_DESTROY : PostQuitMessage(0) ; return 0; case WM_CREATE : procCreate(hw,wp,lp); return 0; case WM_TIMER : procTimer (hw,wp,lp); return 0; case WM_PAINT : procPaint (hw,wp,lp); return 0; } return DefWindowProc(hw,msg,wp,lp); }