我想在按a键时画个矩形,按b键时画个椭圆! (屏幕上只有一个图形,两者不能同时存在)窗口过程这样写的:case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);
return 0;case WM_CHAR:
switch(wParam)
{
case 'a':
InvalidateRect(hwnd,NULL,TRUE);
UpdateWindow(hwnd);
DrawRect(hwnd);
break; case 'b':
InvalidateRect(hwnd,NULL,TRUE);
/*ValidateRect(hwnd,NULL);*/
UpdateWindow(hwnd);
DrawRound(hwnd);
break;
}
return 0;请问大家调用InvalidateRect是会发送一个WM_PAINT消息,也就是用白色画刷覆盖客户区,并使之有效。
为什么我用ValidateRect后,画椭圆的时候矩形还在屏幕上呢?非要注释掉才可以?请大家帮帮我!!
不胜感激!
hdc=BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);
return 0;case WM_CHAR:
switch(wParam)
{
case 'a':
InvalidateRect(hwnd,NULL,TRUE);
UpdateWindow(hwnd);
DrawRect(hwnd);
break; case 'b':
InvalidateRect(hwnd,NULL,TRUE);
/*ValidateRect(hwnd,NULL);*/
UpdateWindow(hwnd);
DrawRound(hwnd);
break;
}
return 0;请问大家调用InvalidateRect是会发送一个WM_PAINT消息,也就是用白色画刷覆盖客户区,并使之有效。
为什么我用ValidateRect后,画椭圆的时候矩形还在屏幕上呢?非要注释掉才可以?请大家帮帮我!!
不胜感激!
case WM_CHAR:
switch(wParam)
{
case 'a':
InvalidateRect(hwnd,NULL,TRUE);
DrawRect(hwnd);
break;
{
case 'a':
{
InvalidateRect(hWnd, NULL, TRUE);
UpdateWindow(hWnd);
hdc=GetWindowDC(hWnd);
Rectangle(hdc, 100, 100, 200, 200);
}
break;
case 'b':
{
InvalidateRect(hWnd, NULL, TRUE);
UpdateWindow(hWnd);
hdc=GetWindowDC(hWnd);
Ellipse(hdc, 100, 100, 200, 200);
}
break;
}
在WM_PAINT中通过switch语句区分
在键盘消息里设置绘图标识然后Invalidate