下面这段代码是在窗口中按下CTROL后画一个椭圆。然后按上下左右键改变椭圆的形状,pageup pagedown键改变椭圆位置。 具体请看代码。呵呵 //全局变量 int icount;int lx=200,ly=200,rx=400,ry=300;//矩形的长宽高#ifndef VK_PAGE_UP#define VK_PAGE_UP 0x021#define VK_PAGE_DOWN 0x022#endif //具体代码处理逻辑 LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){ HDC hdc; PAINTSTRUCT ps; HPEN hP; switch(message) { case WM_KEYDOWN: { switch(wParam) { case VK_CONTROL: icount=1; lx=200,ly=200,rx=400,ry=300; InvalidateRect(hWnd,NULL,TRUE); break; case VK_RIGHT: rx=rx+10; InvalidateRect(hWnd,NULL,TRUE); break; case VK_LEFT: lx=lx-10; InvalidateRect(hWnd,NULL,TRUE); break; case VK_DOWN: ry=ry+10; InvalidateRect(hWnd,NULL,TRUE); break; case VK_UP: ly=ly-10; InvalidateRect(hWnd,NULL,TRUE); break; case VK_HOME: lx=lx-10; rx=rx-10; InvalidateRect(hWnd,NULL,TRUE); break; case VK_END: lx=lx+10; rx=rx+10; InvalidateRect(hWnd,NULL,TRUE); break; case VK_PAGE_UP: ly=ly-10; ry=ry-10; InvalidateRect(hWnd,NULL,TRUE); break; case VK_PAGE_DOWN: ly=ly+10; ry=ry+10; InvalidateRect(hWnd,NULL,TRUE); break; } InvalidateRect(hWnd,NULL,TRUE); break; } case WM_PAINT: hdc=BeginPaint(hWnd,&ps); hP=(HPEN)GetStockObject(BLACK_PEN); if(icount==1) Ellipse(hdc,lx,ly,rx,ry); DeleteObject(hP); EndPaint(hWnd,&ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd,message,wParam,lParam); } return 0;}

评论