读书人

哪位高手能帮小弟我看下这个程序有关问

发布时间: 2012-02-10 21:27:42 作者: rapoo

谁能帮我看下这个程序问题怎么解决
我做了个小程序的实验 在一个窗口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;

读书人网 >C++

热点推荐