zoukankan      html  css  js  c++  java
  • 使用C#画非客户区。

    OwnerDrawForm

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using HANDLE = System.IntPtr;
    using HWND = System.IntPtr;
    namespace WuyinMuManager
    {
     /**//// <summary>
    /// Form1 的摘要说明。
     /// </summary>
    public class WuyinMsnForm : System.Windows.Forms.Form
    {
     private System.ComponentModel.IContainer components=null;
     Point location = new Point(0,0);
      Point p= new Point(0,0);
       Size size = new Size(600,400);
       bool isMax = false;
       private System.Windows.Forms.ContextMenu ControlMenu;
       private System.Windows.Forms.MenuItem menuItem6;
       private System.Windows.Forms.MenuItem menuRestore;
       private System.Windows.Forms.MenuItem menuMove;
       private System.Windows.Forms.MenuItem menuSize;
       private System.Windows.Forms.MenuItem menuMin;
       private System.Windows.Forms.MenuItem menuMax;
       private System.Windows.Forms.MenuItem menuClose;
       bool cursor=false;
       Graphics g = null;
       bool IsDiaLog = false;
       public const int WM_NCPAINT = 0x85;
       Color DeskTop = Color.FromArgb(122,150,223);
       Color Caption = Color.FromArgb(216,228,248);
       
       protected override void WndProc(ref Message m)
       {
        
        RectangleF rectf;
        switch (m.Msg)
        {
         case WM_NCPAINT :
          IntPtr hrgn = m.WParam;
          if ( hrgn != (IntPtr)1 )
          {
           Region rgn = Region.FromHrgn(hrgn);
           g = CreateGraphics();
           rectf = rgn.GetBounds(g);
           PaintNonClientArea(g, rectf);
          }
          else
          {
           g = CreateGraphics();
           rectf = new RectangleF(0,-23, Width, 23);
           PaintNonClientArea(g, rectf);
           g.Dispose();
          }
        
          //base.WndProc(ref m);
          break;
         default :
          base.WndProc (ref m);
          break;
        }
       }
       public bool isDialog
       {
        get
        {
         return IsDiaLog ;
        }
        set
        {
         IsDiaLog =value;
        }
       }
       
       void PaintNonClientArea(Graphics g,RectangleF r)
       {
        //this.PainWindow(g);
       }
     
       public WuyinMsnForm()
       {
        //
        // Windows 窗体设计器支持所必需的
        //
        InitializeComponent();
        this.MinimumSize = new Size(160,20);
        //int MyMenu = GetSystemMenu(this.Handle,0);
        this.FormBorderStyle=FormBorderStyle.None;
        //LoadMenu((IntPtr)MyMenu,"");
        //MessageBox.Show(MyMenu.ToString());
        //
        // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
        //
       }
       /**//// <summary>
       /// 清理所有正在使用的资源。
     /// </summary>
     protected override void Dispose( bool disposing )
     {
      if( disposing )
      {
       if(components != null)
       {
        components.Dispose();
       }
      }
      base.Dispose( disposing );
     }
     protected override void OnPaint(PaintEventArgs e)
     {
      //int handle = Win32.User.GetWindowDC(this.Handle);
      g = this.CreateGraphics();
       //g = Graphics.FromHdc(((IntPtr)handle));
       this.PainWindow(g);
       //Win32.RECT Rect = new Win32.RECT();
       //Win32.User.GetWindowRect((IntPtr)handle,ref Rect);
       //Win32.User.ReleaseDC(this.Handle,(IntPtr)handle);
      }
      public override string Text
      {
       get
       {
        return base.Text;
       }
       set
       {
        DrawText(this.CreateGraphics());
        base.Text = value;
       }
      }
    
      protected override void OnMouseMove(MouseEventArgs e)
      {
       //this.Form1_MouseMove(this,e);
       base.OnMouseMove (e);
      }
    
      void PainWindow(Graphics gx)
      {
       Bitmap bmp = new Bitmap(this.Width,this.Height);
       Graphics g = Graphics.FromImage(bmp);
       Pen pen;
       //左边框1
       pen = new Pen(Color.FromArgb(133,150,202));
       g.DrawLine(pen,new Point(0,0),new Point(0,this.Height));
       //上边框1
       g.DrawLine(pen,new Point(0,0),new Point(this.Width,0));
       pen = new Pen(Color.White);
       g.DrawLine(pen,new Point(1,1),new Point(1,this.Height-1));
       g.DrawLine(pen,new Point(1,1),new Point(this.Width-1,1));
       //右边框1
       pen = new Pen(Color.FromArgb(90,108,162));
       g.DrawLine(pen,new Point(this.Width-1,1),new Point(this.Width-1,this.Height));  
       //下边框1
       g.DrawLine(pen,new Point(1,this.Height-1),new Point(this.Width,this.Height-1));
       pen = new Pen(Color.FromArgb(191,202,235));
       g.DrawLine(pen,new Point(this.Width-2,2),new Point(this.Width-2,this.Height-2)); 
       g.DrawLine(pen,new Point(2,this.Height-2),new Point(this.Width-2,this.Height-2)); 
       Brush brush = new SolidBrush(Color.FromArgb(206,216,239));
       g.FillRectangle(brush,2,2,this.Width-4,this.Height-4);
       if(this.BackColor.ToKnownColor()!=KnownColor.Control)
       {
        brush = new SolidBrush(this.BackColor);
        g.FillRectangle(brush,4,4,this.Width-8,this.Height-8);
       }
       else
       {
        this.BackColor = Caption;
        brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(new Point(4,4),new Size(this.Width-8,20)),Color.FromArgb(248,248,248),Color.FromArgb(220,226,240),3600,true);
        g.FillRectangle(brush,4,4,this.Width-8,this.Height-8);    
       }
       //画标题栏
       brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(new Point(4,4),new Size(this.Width-8,20)),Color.FromArgb(192,208,240),Color.FromArgb(248,248,248),120,true);
       g.FillRectangle(brush,4,4,this.Width-8,20);
       //画图标和标题
       DrawIcon(g);
       DrawText(g);
       //画按钮
       if(!this.isDialog)
       {
        this.DrawMinButton1(g);
        if(this.MaximizeBox)
         this.DrawMaxButton1(g);
       }
       this.DrawCloseButton1(g);
       gx.DrawImage(bmp,0,0);
      }
      void DrawIcon(Graphics g)
      {
       g.DrawIcon(this.Icon,new Rectangle(new Point(6,6),new Size(16,16)));
      }
      void DrawText(Graphics g)
      {
       Brush brush = new SolidBrush(Color.FromArgb(61,77,129));
       g.DrawString(this.Text,new Font("tohoma",9),brush,new Point(26,6),StringFormat.GenericDefault);
      }
      void DrawMinButton1(Graphics g)
      {
       //最小化
       Brush brush = new SolidBrush(Color.FromArgb(128,144,168));
       g.FillRectangle(brush,this.Width-57,6,16,16);
       brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(new Point(6,this.Width-63),new Size(17,17)),Color.FromArgb(199,207,231),Color.FromArgb(248,248,248),System.Drawing.Drawing2D. LinearGradientMode.Vertical);
       g.FillRectangle(brush,this.Width-56,7,14,14);
       Pen pen;
       if(this.MinimizeBox)
        pen = new Pen(Color.FromArgb(48,64,120),3);
       else
        pen = new Pen(Color.Silver,3);
       g.DrawLine(pen,new Point(this.Width-53,17),new Point(this.Width-46,17));
      }
      void DrawMinButton2(Graphics g)
      {
       //最小化
       Brush brush = new SolidBrush(Color.FromArgb(128,144,168));
       g.FillRectangle(brush,this.Width-57,6,16,16);
       brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(new Point(6,this.Width-63),new Size(17,17)),Color.White,Color.Snow,System.Drawing.Drawing2D. LinearGradientMode.Vertical);
       g.FillRectangle(brush,this.Width-56,7,14,14);
       Pen pen;
       if(this.MinimizeBox)
        pen = new Pen(Color.FromArgb(48,64,120),3);
       else
        pen = new Pen(Color.Silver,3);
       g.DrawLine(pen,new Point(this.Width-53,17),new Point(this.Width-46,17));
      }
      void DrawMaxButton1(Graphics g)
      {
       //最大化或者恢复
       Brush brush = new SolidBrush(Color.FromArgb(128,144,168));
       g.FillRectangle(brush,this.Width-40,6,16,16);
       brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(new Point(6,this.Width-63),new Size(17,17)),Color.FromArgb(199,207,231),Color.FromArgb(248,248,248),System.Drawing.Drawing2D. LinearGradientMode.Vertical);
       g.FillRectangle(brush,this.Width-39,7,14,14);
       if(!isMax)
       {
        brush = new SolidBrush(Color.FromArgb(48,64,120));
        g.FillRectangle(brush,this.Width-37,9,10,10);
        Pen pen = new Pen(Color.White,6);
        g.DrawLine(pen,new Point(this.Width-36,15),new Point(this.Width-28,15));
       }
       else
       {
        brush = new SolidBrush(Color.FromArgb(48,64,120));
        g.FillRectangle(brush,this.Width-34,9,7,7);
        Pen pen = new Pen(Color.White,4);
        g.DrawLine(pen,new Point(this.Width-33,13),new Point(this.Width-28,13));
        g.FillRectangle(brush,this.Width-37,12,7,7);
        g.DrawLine(pen,new Point(this.Width-36,16),new Point(this.Width-31,16));
       }
      }
      void DrawMaxButton2(Graphics g)
      {
       //最大化或者恢复
       Brush brush = new SolidBrush(Color.FromArgb(128,144,168));
       g.FillRectangle(brush,this.Width-40,6,16,16);
       brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(new Point(6,this.Width-63),new Size(17,17)),Color.White,Color.Snow,System.Drawing.Drawing2D. LinearGradientMode.Vertical);
       g.FillRectangle(brush,this.Width-39,7,14,14);
       if(!isMax)
       {
        brush = new SolidBrush(Color.FromArgb(48,64,120));
        g.FillRectangle(brush,this.Width-37,9,10,10);
        Pen pen = new Pen(Color.White,6);
        g.DrawLine(pen,new Point(this.Width-36,15),new Point(this.Width-28,15));
       }
       else
       {
        brush = new SolidBrush(Color.FromArgb(48,64,120));
        g.FillRectangle(brush,this.Width-34,9,7,7);
        Pen pen = new Pen(Color.White,4);
        g.DrawLine(pen,new Point(this.Width-33,13),new Point(this.Width-28,13));
        g.FillRectangle(brush,this.Width-37,12,7,7);
        g.DrawLine(pen,new Point(this.Width-36,16),new Point(this.Width-31,16));
       }
      }
      void DrawCloseButton1(Graphics g)
      {
       //关闭
       Brush brush = new SolidBrush(Color.FromArgb(128,144,168));
       g.FillRectangle(brush,this.Width-23,6,16,16);
       brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(new Point(6,this.Width-63),new Size(17,17)),Color.FromArgb(199,207,231),Color.FromArgb(248,248,248),System.Drawing.Drawing2D. LinearGradientMode.Vertical);
       g.FillRectangle(brush,this.Width-22,7,14,14);
       Pen pen = new Pen(Color.FromArgb(48,64,120),2);
       g.DrawLine(pen,new Point(this.Width-20,9),new Point(this.Width-11,18));
       g.DrawLine(pen,new Point(this.Width-11,9),new Point(this.Width-20,18));
      }
      void DrawCloseButton2(Graphics g)
      {
       //关闭
       Brush brush = new SolidBrush(Color.FromArgb(128,144,168));
       g.FillRectangle(brush,this.Width-23,6,16,16);
       brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(new Point(6,this.Width-63),new Size(17,17)),Color.Red,Color.Snow,System.Drawing.Drawing2D. LinearGradientMode.Vertical);
       g.FillRectangle(brush,this.Width-22,7,14,14);
       Pen pen = new Pen(Color.FromArgb(48,64,120),2);
       g.DrawLine(pen,new Point(this.Width-20,9),new Point(this.Width-11,18));
       g.DrawLine(pen,new Point(this.Width-11,9),new Point(this.Width-20,18));
      }
      Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码
      /**//// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {
       this.ControlMenu = new System.Windows.Forms.ContextMenu();
       this.menuRestore = new System.Windows.Forms.MenuItem();
       this.menuMove = new System.Windows.Forms.MenuItem();
       this.menuSize = new System.Windows.Forms.MenuItem();
       this.menuMin = new System.Windows.Forms.MenuItem();
       this.menuMax = new System.Windows.Forms.MenuItem();
       this.menuItem6 = new System.Windows.Forms.MenuItem();
       this.menuClose = new System.Windows.Forms.MenuItem();
       // 
       // ControlMenu
       // 
       this.ControlMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                          this.menuRestore,
                          this.menuMove,
                          this.menuSize,
                          this.menuMin,
                          this.menuMax,
                          this.menuItem6,
                          this.menuClose});
       // 
       // menuRestore
       // 
       this.menuRestore.Enabled = false;
       this.menuRestore.Index = 0;
       this.menuRestore.Text = "还原(&R)";
       // 
       // menuMove
       // 
       this.menuMove.Index = 1;
       this.menuMove.Text = "移动(&M)";
       this.menuMove.Click += new System.EventHandler(this.menuMove_Click);
       // 
       // menuSize
       // 
       this.menuSize.Index = 2;
       this.menuSize.Text = "大小(&S)";
       this.menuSize.Click += new System.EventHandler(this.menuSize_Click);
       // 
       // menuMin
       // 
       this.menuMin.Index = 3;
       this.menuMin.Text = "最小化(&N)";
       this.menuMin.Click += new System.EventHandler(this.menuMin_Click);
       // 
       // menuMax
       // 
       this.menuMax.Index = 4;
       this.menuMax.Text = "最大化(&X)";
       this.menuMax.Click += new System.EventHandler(this.menuMax_Click);
       // 
       // menuItem6
       // 
       this.menuItem6.Index = 5;
       this.menuItem6.Text = "-";
       // 
       // menuClose
       // 
       this.menuClose.DefaultItem = true;
       this.menuClose.Index = 6;
       this.menuClose.Shortcut = System.Windows.Forms.Shortcut.AltF4;
       this.menuClose.Text = "关闭(&C)";
       this.menuClose.Click += new System.EventHandler(this.menuClose_Click);
       // 
       // WuyinMsnForm
       // 
       this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
       this.ClientSize = new System.Drawing.Size(160, 120);
       this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
       this.Name = "WuyinMsnForm";
       this.Text = "Form1";
       this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
       this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);
       this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged);
       this.Load += new System.EventHandler(this.WuyinMsnForm_Load);
       this.DoubleClick += new System.EventHandler(this.Form1_DoubleClick);
       this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseUp);
       this.LocationChanged += new System.EventHandler(this.Form1_LocationChanged);
       this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
      }
      #endregion
      protected override void OnCreateControl()
      {
       base.OnCreateControl ();
      }
      private void Form1_DoubleClick(object sender, EventArgs e)
      {
       if(!this.isDialog)
       {
        Point p = new Point(0,0);
        GetCursorPos(out p);
        if(p.X - this.Location.X>=this.Width-70 || p.Y - this.Location.Y>=20)
         return;
        if(this.Size.Width >=Screen.AllScreens[0].WorkingArea.Size.Width && this.Size.Height>=Screen.AllScreens[0].WorkingArea.Size.Height)
         Restore();
        else
        {
         Max();
        }
       }
      }
      [DllImport("user32")] public static extern int GetCursorPos(out Point lpPoint);
      [DllImport("user32")] public static extern int GetSystemMenu(HWND hwnd, int bRevert);
      [DllImport("user32")] public static extern int LoadMenu(HANDLE hInstance, string lpString);
      //[DllImport("user32")] public static extern int MoveWindow(HWND hwnd, int x, int y, int nWidth, int nHeight, int bRepaint);
      void Restore()
      {
       //MessageBox.Show(String.Format("W:{0},H:{1}",size.Width,size.Height));
       this.Size=this.size;
       this.Location = this.location;
       this.WindowState=FormWindowState.Normal;
       this.isMax=false;
       this.Invalidate();
       this.menuMax.Enabled=true;
       this.menuRestore.Enabled=false;
       this.menuSize.Enabled=true;
       this.menuMove.Enabled=true;
       //this.PainWindow(g);
      }
      void Max()
      {
       //MessageBox.Show(String.Format("W:{0},H:{1}",size.Width,size.Height));
       //this.location = this.Location;
       //this.size = this.Size;
       this.isMax = true;
       this.Size = Screen.AllScreens[0].WorkingArea.Size;
       this.Location=new Point(0,0);
       this.Invalidate();
       this.menuMax.Enabled=false;
       this.menuRestore.Enabled=true;
       this.menuSize.Enabled=false;
       this.menuMove.Enabled=false;
       //this.PainWindow(g);
      }
      void CgBt(MouseEventArgs e)
      {
       if(e.X>this.Width-23 && e.X<this.Width-7 && e.Y>7 && e.Y<20)
       {
        this.DrawCloseButton2(g);
        return;
       }
       else
       {
        this.DrawCloseButton1(g);
       }  
       if(this.isDialog)
        return;   
       if(e.X>this.Width-57 && e.X<this.Width-41 && e.Y>7 && e.Y<22)
       {
        this.DrawMinButton2(g);
        return;
       }
       else
       {
        this.DrawMinButton1(g);
       }
       if(e.X>this.Width-40 && e.X<this.Width-24 && e.Y>7 && e.Y<22)
       {
        this.DrawMaxButton2(g); 
        return;
       }
       else
       {
        this.DrawMaxButton1(g);   
       }
      }
      private void Form1_MouseMove(object sender, MouseEventArgs e)
      {  
       if(e.X>this.Width-70 && e.Y<25)
        CgBt(e);  
       if(isMax)
        return;
       CursorResizeForm(e,this);
       if(e.Button==MouseButtons.Left && e.Y>0 && e.Y<30 && e.X<this.Width-70 && e.Y<=20)
        this.Location=new Point(Control.MousePosition.X-p.X,Control.MousePosition.Y-p.Y);
      }
      private void CursorResizeForm(MouseEventArgs e,Control control)
      {   //鼠标控制窗体大小
       if(e.Y>control.Height-10 && e.Y<control.Height && e.X>control.Width-10 && e.X<control.Width)
        control.Cursor=System.Windows.Forms.Cursors.SizeNWSE; 
       else if(e.X>control.Width-6 && e.X<control.Width && control.Cursor!=System.Windows.Forms.Cursors.SizeNWSE)
        control.Cursor=System.Windows.Forms.Cursors.SizeWE;
       else if(e.Y>control.Height-6 && e.Y<control.Height && control.Cursor!=System.Windows.Forms.Cursors.SizeNWSE)
        control.Cursor=System.Windows.Forms.Cursors.SizeNS;
       else if(e.X>0 && e.X<6 && control.Cursor!=System.Windows.Forms.Cursors.SizeNESW)
        control.Cursor=System.Windows.Forms.Cursors.SizeWE;
       else if(!cursor)
        control.Cursor=Cursors.Default;
       if(e.Button==MouseButtons.Left)
       {
        if(control.Cursor==System.Windows.Forms.Cursors.SizeWE && e.X>16)
         control.Width=Control.MousePosition.X-control.Left+3;
        else if(control.Cursor==Cursors.SizeNWSE)
        {
         control.Width=Control.MousePosition.X-control.Left+3;
         control.Height=Control.MousePosition.Y-control.Top+3;
        }
        else if(control.Cursor==System.Windows.Forms.Cursors.SizeNS)
         control.Height=Control.MousePosition.Y-control.Top+3;
       }
      }
      private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
      {
       if(this.isDialog)
        return;
       cursor=true;
       p=new Point(e.X,e.Y);
       //location = this.Location;
       //size = this.Size;
       if(e.Button==MouseButtons.Right && e.X>0 && e.X<this.Width - 70  && e.Y>0 && e.Y<22)
       {
        this.ControlMenu.Show(this,new Point(e.X,e.Y));
        return;
       }
       if(e.Button==MouseButtons.Left  && e.X>0 && e.X<26 && e.Y>0 && e.Y<22)
        this.ControlMenu.Show(this,new Point(0,20));
      }
      private void Form1_MouseUp(object sender, MouseEventArgs e)
      {
       if(e.Button!=MouseButtons.Left)
        return;
       cursor=false;
       //三个控制按钮的
       if(e.X>this.Width-24 && e.X<this.Width-6 && e.Y>7 && e.Y<20)
        Close();
       if(this.isDialog)
        return;
       if(e.X>this.Width-57 && e.X<this.Width-48 && e.Y>7 && e.Y<20)
        this.WindowState=FormWindowState.Minimized;
       if(e.X>this.Width-48 && e.X<this.Width-23 && e.Y>7 && e.Y<20)
       {
        if(isMax)
         Restore();
        else
         Max();     
       }
      }
      private void Form1_SizeChanged(object sender, EventArgs e)
      {
       if(this.Size.Width<=20 || this.Size.Height<=20)
        return;
       if(!isMax)
       {
        this.location = this.Location;
        this.size=this.Size;
       }
       //this.PainWindow(g);
      }
      protected override void DefWndProc(ref Message m)
      {
       //MessageBox.Show(m.ToString());
       base.DefWndProc (ref m);
      }
    
      private void Form1_KeyDown(object sender, KeyEventArgs e)
      {
       if(e.Alt && e.KeyCode==Keys.Space)
        this.ControlMenu.Show(this,new Point(4,22));  
      }
      private void menuClose_Click(object sender, System.EventArgs e)
      {
       Close();
      }
      private void menuMax_Click(object sender, System.EventArgs e)
      {
       Max();
      }
      private void menuMin_Click(object sender, System.EventArgs e)
      {
       this.WindowState=FormWindowState.Minimized;
      }
      private void menuSize_Click(object sender, System.EventArgs e)
      {
       Pen pen = new Pen(Color.Black,4);
       g.DrawLine(pen,new Point(0,0),new Point(0,this.Height));
       g.DrawLine(pen,new Point(0,0),new Point(this.Width,0));
       g.DrawLine(pen,new Point(this.Width,0),new Point(this.Width,this.Height));
       g.DrawLine(pen,new Point(0,this.Height),new Point(this.Width,this.Height));
       this.Cursor = Cursors.SizeAll;
      }
      private void menuMove_Click(object sender, System.EventArgs e)
      {
       Pen pen = new Pen(Color.Black,4);
       g.DrawLine(pen,new Point(0,0),new Point(0,this.Height));
       g.DrawLine(pen,new Point(0,0),new Point(this.Width,0));
       g.DrawLine(pen,new Point(this.Width,0),new Point(this.Width,this.Height));
       g.DrawLine(pen,new Point(0,this.Height),new Point(this.Width,this.Height));
       mouse_event(MouseEvents.MOUSEEVENTF_MOVE,this.Location.X + this.Width/2,this.Location.Y + this.Height/2,0,0);
       //MoveWindow(this.Handle,0,0,this.Width,this.Height,0);
       this.Cursor = Cursors.SizeAll;
      }
      /**//// <summary>
      /// 模拟鼠标事件
      /// </summary>
      /// <param name="dwFlags">鼠标事件的Enum</param>
      /// <param name="dx">X座标</param>
      /// <param name="dy">Y座标</param>
      /// <param name="cButtons"></param>
      /// <param name="dwExtraInfo"></param>
      [DllImport("user32.dll")]
      public static extern void mouse_event (MouseEvents dwFlags,long dx, long dy,long cButtons,long dwExtraInfo);
      /**//// <summary>
      /// 定义模拟鼠标的常数
      /// </summary>
      public enum MouseEvents:uint
      {
       MOUSEEVENTF_LEFTDOWN = 0x2,
       MOUSEEVENTF_LEFTUP = 0x4,
       MOUSEEVENTF_MIDDLEDOWN = 0x20,
       MOUSEEVENTF_MIDDLEUP = 0x40,
       MOUSEEVENTF_MOVE = 0x1,
       MOUSEEVENTF_ABSOLUTE = 0x8000,
       MOUSEEVENTF_RIGHTDOWN = 0x8,
       MOUSEEVENTF_RIGHTUP = 0x10,
      }
      private void Form1_LocationChanged(object sender, EventArgs e)
      {
       if(!isMax)
        location=Location;
      }
      protected override void OnControlAdded(ControlEventArgs e)
      {
       
       if(e.Control.Top<24)e.Control.Top += 24;
       if(e.Control.Left<2)e.Control.Left+=2;
       
       /**//*
       if(e.Control.BackColor.ToKnownColor()==KnownColor.Control)
       {  
         //((MyControl)e.Control).DoPaint();
         //Color c = Color.FromArgb(255,220,226,240);
         //e.Control.BackColor=c;  
         int C = (Win32.GDI.GetPixel((IntPtr)Win32.User.GetWindowDC((IntPtr)0),e.Control.Location.X,e.Control.Location.Y));
         Color c = Color.FromName(C.ToString());
         e.Control.BackColor = c;
       }
       base.OnControlAdded (e);
       */
      }
      private void WuyinMsnForm_Load(object sender, System.EventArgs e)
      {
       this.Height+=22;
       this.Width+=2;
      }
     }
     public class MyControl:Control
     {
      public void DoPaint()
      {
      }
      public void DoPaint(PaintEventArgs e)
      {
       if(this.GetType().ToString()=="System.Windows.Forms.Label")
       {
        e.Graphics.DrawString(this.Text,this.Font,new SolidBrush(this.ForeColor),this.Location,StringFormat.GenericDefault);
        return;
       }
      
       this.BackColor= Color.Empty;
       Brush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(new Point(4,4),new Size(this.Width-8,20)),Color.FromArgb(248,248,248),Color.FromArgb(220,226,240),3600,true);
       e.Graphics.FillRectangle(brush,e.ClipRectangle.X,e.ClipRectangle.Y,e.ClipRectangle.Width,e.ClipRectangle.Height); 
      }
      protected override void OnPaint(PaintEventArgs e)
      {
       //base.OnPaint (e);
       DoPaint(e);
      }
     }
    }

  • 相关阅读:
    c++中 . 和 -> 的区别是什么?
    codeblocks中一个简单的程序的创建。
    将牛客中的代码在codeblocks中进行实现
    (全代码)输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
    解决You are using pip version 10.0.1, however version 18.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.
    mysql 表复制(表备份)
    Scrapy 抓取股票行情
    去哪儿网数据爬取
    用API爬取天气预报数据
    爬虫防封IP
  • 原文地址:https://www.cnblogs.com/HeroBeast/p/1374647.html
Copyright © 2011-2022 走看看