日期:2014-05-17  浏览次数:21663 次

求助c#调用API函数RedrawWindow更新指定区域的问题
网上找了半天资料没搞明白,求高手指点下如何用RedrawWindow清除屏幕上指定位置的矩形图象.

矩形是通过

IntPtr DesktopHandle = GetDC(IntPtr.Zero);
Graphics g = System.Drawing.Graphics.FromHdc(DesktopHandle);
Pen pen = new Pen(Color.Black, 2);
g.DrawRectangle(pen, rect.Left, rect.Top, winWidth, winHeight);

画在桌面句柄的窗体上(桌面上),矩形下面有程序窗口。
想要达到的效果,利用RedrawWindow函数清除桌面指定区域绘制出来的矩形,包括画在另外应用程序窗口上的(绘制矩形时下面有其他窗口,所以显示在另个窗口里)
直接执行:RedrawWindow(IntPtr.Zero, null, IntPtr.Zero, 0x85);
可以清除绘制的矩形,但是整个桌面都刷新了一下,和F5效果一样(不要这样的效果,屏幕刷新),
现在想要的是局部刷新,
也就是RedrawWindow函数的2,3,4个参数如何声明和设置

BOOL RedrawWindow(HWND hwnd,CONST RECT* lprcUpdate,HRGN hrgnUpdate,UINT fuRedraw);
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hwnd Long,要重画的窗口的句柄。零表示更新桌面窗口 
lprcUpdate RECT,窗口中需要重画的一个矩形区域 
hrgnUpdate Long,一个“区”的句柄,这个区描述了要重画的窗口区域。“区”:Region 
fuRedraw Long,规定具体重画操作的旗标。

------解决方案--------------------
我不会。。...