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

哪位高手能帮小弟我看下这个程序有关问题如何解决

2012-02-10 
谁能帮我看下这个程序问题怎么解决我做了个小程序的实验在一个窗口A中当我把一个小窗口B往A上放然后再取走

谁能帮我看下这个程序问题怎么解决
我做了个小程序的实验   在一个窗口A中     当我把一个小窗口B   往A上放然后再取走
这个时候A中被B覆盖的矩形区域会无效,成为一个无效矩形区域,windows于是就会发一条   WM_PAINT  

下面是我的对应   WM_PAINT     的处理程序


case   WM_PAINT:    

GetUpdateRect(hwnd,&rect1,FALSE);     //得到无效矩形区域的4个点位置
                                                                      //放于rect1结构
sprintf(szChar1, "top   is   %d ",rect1.top);         //把4个位置分别放入4个数组
sprintf(szChar2, "botn   is   %d ",rect1.bottom);
sprintf(szChar3, "left   is   %d ",rect1.left);
sprintf(szChar4, "right   is   %d ",rect1.right);


HDC   hDC;
TextOut(hDC,0,i,szChar1,strlen(szChar1));           //在窗口里显示4个位置的点

TextOut(hDC,0,i+100,szChar2,strlen(szChar2));

TextOut(hDC,0,i+200,szChar3,strlen(szChar3));

TextOut(hDC,0,i+300,szChar4,strlen(szChar4));
EndPaint(hwnd,&ps);


程序编写好后   我发现它并不按我的想象工作,每次B覆盖A的一块后   它不会自动更新显示这块无效区域的4个位置。
今天研究了半天   终于发现   是   TextOut   根本就没有工作
只有在TextOut   自己写文字的那块区域被覆盖它才会开始工作

请问整个问题怎么解决    


[解决办法]
关于这个方法的使用方法、效果,
查 MSDN
[解决办法]
case WM_PAINT:
GetUpdateRect(hWnd,&rect1,FALSE);
InvalidateRect(hWnd, NULL, FALSE); //重绘hWnd整个用户区域
hdc = BeginPaint(hWnd, &ps);
...
EndPaint(hWnd, &ps);

break;

热点排行