12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Windows.Forms;
- using System.IO;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.ComponentModel;
- namespace LYFZ.ComponentLibrary
- {
- public class ProgressBarEx : System.Windows.Forms.ProgressBar
- {
- [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);
- public Color foreColor = System.Drawing.SystemColors.MenuHighlight;
- public Font font = new System.Drawing.Font("微软雅黑", 11.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- public string foreText = "";
- public bool bshowText = false;
- protected override void WndProc(ref Message m)
- {
- base.WndProc(ref m);
- if (m.Msg == 0xf || m.Msg == 0x133)
- {
- //拦截系统消息,获得当前控件进程以便重绘。
- //一些控件(如TextBox、Button等)是由系统进程绘制,重载OnPaint方法将不起作用.
- //所有这里并没有使用重载OnPaint方法绘制TextBox边框。
- //
- //MSDN:重写 OnPaint 将禁止修改所有控件的外观。
- //那些由 Windows 完成其所有绘图的控件(例如 Textbox)从不调用它们的 OnPaint 方法,
- //因此将永远不会使用自定义代码。请参见您要修改的特定控件的文档,
- //查看 OnPaint 方法是否可用。如果某个控件未将 OnPaint 作为成员方法列出,
- //则您无法通过重写此方法改变其外观。
- //
- //MSDN:要了解可用的 Message.Msg、Message.LParam 和 Message.WParam 值,
- //请参考位于 MSDN Library 中的 Platform SDK 文档参考。可在 Platform SDK(“Core SDK”一节)
- //下载中包含的 windows.h 头文件中找到实际常数值,该文件也可在 MSDN 上找到。
- IntPtr hDC = GetWindowDC(m.HWnd);
- if (hDC.ToInt32() == 0)
- {
- return;
- }
- //base.OnPaint(e);
- System.Drawing.Graphics g = Graphics.FromHdc(hDC);
- SizeF foreSize = g.MeasureString(foreText, font);
- //base.OnPaint(e);
- if (bshowText)
- {
- g.DrawString(foreText, font, new SolidBrush(foreColor), new PointF(this.Width - foreSize.Width, (this.Height - foreSize.Height) / 2));
- }
- //返回结果
- m.Result = IntPtr.Zero;
- //释放
- ReleaseDC(m.HWnd, hDC);
- }
- }
- protected override void OnPaint(PaintEventArgs e)
- {
-
- }
- }
- }
|