如题
解决方案 »
- WinForm 如果获取当前IE程序中的地址栏中的URL地址。
- 在线等...急求...Gridview 选择某行之后滑动块自动置顶 在线等
- 怎么改写动态html?
- 请问安装包怎么实现把指定文件拷贝到系统目录?
- DOS程序输出获取??
- 如何在C#中获得本地路径(分不够可以再加)
- c#如何获得集成身份验证中的用户名(域)和密码
- 在DataGrid中如何绑定这种列呢<%#Container.DataItem("UserName")%>。。。。
- 各位大侠,小弟写了一个串口通信例子,但串口收不到数,求关注
- 各位大侠帮帮忙:如何将datagrid(更改之后)保存到数据库!!
- 操作Sybase数据库问题
- 高手!高手!在sybase里怎么联sybase 除了用odbc!!!!!!!!!!!!!!
使用API就是InvalidateRect
如果需要同时刷新rect中子控件,应该使用
this.Invalidate(rect,true);
使用API则应该是RedrawWindow
可以用Reflector观察Control.Invalidate作参考
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
创建一个没有Border和Caption 并且设置了TOPMOST的窗口,使它的大小和位置符合你要求的矩形区域,在程序中显示/隐藏这个窗口即可
调用 windows api GetDesktopWindow 获取桌面窗口句柄
调用 api InvalidateRect 参数hwnd为桌面句柄使桌面具体区域无效
rect为screen区域 需要clienttoscreen进行转换.
1.ShowWindow时应当使用SW_SHOWNA(或者使用SetWindowPos和SWP_SHOWWINDOW|SWP_NOACTIVATE)
2.创建窗口时应该指定不重画背景,窗口响应WM_PAINT/WM_ERASEBKGND之类消息时也不进行填充操作。看起来直接使用API来创建的Window 而非Form类来作为这个遮盖窗口会比较合适。通过显示/隐藏一个浮动窗口来实现刷新的方式是被广泛使用的 一种典型的例子是诸多翻译软件的屏幕取词功能,往往就是以这种方式来促使目标窗口进行绘制字符串API调用。
[DllImport("user32.dll", EntryPoint = "RedrawWindow")]
public static extern bool RedrawWindow(int hWnd, IntPtr prect, IntPtr hrgnUpdate, uint flags);要刷新调用代码如下RedrawWindow(0, IntPtr.Zero, IntPtr.Zero, 4 | 1 | 128);