C#通过WndProc获取当前进程,以便重绘控件
2014-03-13 16:16
141 查看
有时候,我们用paint重绘用户控件时,起不到作用,这个时候,我们可以通过获取进程,来重绘控件。下面这个实例是重绘边框的颜色为红色,当边框的风格为FixedSingle的时候,来进行重绘操作。
/// <summary>/// 获得当前进程,以便重绘控件/// </summary>/// <param name="hWnd"></param>/// <returns></returns>[System.Runtime.InteropServices.DllImport("user32.dll")]static extern IntPtr GetWindowDC(IntPtr hWnd);[System.Runtime.InteropServices.DllImport("user32.dll")]static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); protected override void WndProc(ref Message m){base.WndProc(ref m);if (m.Msg == 0xf || m.Msg == 0x133){IntPtr hDC = GetWindowDC(m.HWnd);if (hDC.ToInt32() == 0){return;}if (this.BorderStyle == BorderStyle.FixedSingle){//边框Width为1个像素System.Drawing.Pen pen = new Pen(Color.Red,1);//绘制边框System.Drawing.Graphics g = Graphics.FromHdc(hDC);g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;g.DrawRectangle(pen, 0, 0, this.Width-1, this.Height-1);pen.Dispose();}//返回结果m.Result = IntPtr.Zero;//释放ReleaseDC(m.HWnd, hDC);}}
相关文章推荐
- c#.net获取当前进程的句柄数量
- 在windows里通过进程控制块获取所有当前所有进程-其实非常简单
- C#通过API获取接收数据窗体控件句柄,并向该句柄发送文本信息
- 通过VBS访问WMI,获取当前所有进程信息
- C# 获取系统当前进程列表
- Linux下获取当前进程的执行文件的绝对路径和所在目录(通过/proc/self/exe链接)
- C#通过反射获取当前工程中所有窗体并打开的方法
- 获取WPF窗体/控件的句柄/当前进程的句柄
- 如何通过InfoPath中的日期选取器控件获取当前选中的月份的名称
- C#中通过反射方法获取控件类型和名称
- 【C#】通过webbrowser控件获取验证码
- C#获取当前程序运行路径的方法集合//获取当前进程的完整路径
- C# Process获取当前进程信息
- C#获取当前进程HASH的方法
- c# 通过控件名称获取控件
- Atitit,通过pid获取进程文件路径 java php c#.net版本大总结
- 不使用GridView自带编辑删除等等按钮,放置服务器控件的按钮。获取点击按钮的当前行以便进行编辑删除
- C#获取当前窗体的受焦控件。
- 有关C#获取当前进程资源简况
- android5.1.1通过getRunningServices获取当前运行的pid,进程名等