首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

请大家帮小弟我想想。

2012-04-14 
请大家帮我想想。。。我想在按a键时画个矩形,按b键时画个椭圆!(屏幕上只有一个图形,两者不能同时存在)窗口过

请大家帮我想想。。。
我想在按a键时画个矩形,按b键时画个椭圆! (屏幕上只有一个图形,两者不能同时存在)

窗口过程这样写的:

C/C++ code
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后,画椭圆的时候矩形还在屏幕上呢?非要注释掉才可以?

请大家帮帮我!!
不胜感激!

[解决办法]
switch(wParam)
{
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消息中
在WM_PAINT中通过switch语句区分
在键盘消息里设置绘图标识然后Invalidate

热点排行