无边框拖动、阴影、任务栏最大最小化

无边框拖动

添加命名空间:

using System.Runtime.InteropServices;

添加以下代码:

[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MOVE = 0xF010;
public const int HTCAPTION = 0x0002;

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
   ReleaseCapture();
   SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
}

阴影效果

添加命名空间:

using System.Runtime.InteropServices;

添加以下代码,在窗体初始化的时候调用 SetShadow() 即可:

private const int CS_DropSHADOW = 0x20000;
private const int GCL_STYLE = (-26);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SetClassLong(IntPtr hwnd, int nIndex, int dwNewLong);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int GetClassLong(IntPtr hwnd, int nIndex);
private void SetShadow()
{
    SetClassLong(this.Handle, GCL_STYLE, GetClassLong(this.Handle, GCL_STYLE) | CS_DropSHADOW);
}

单击任务栏实现最大化最小化

添加以下代码:

protected override CreateParams CreateParams
{
   get
   {
      const int WS_MINIMIZEBOX = 0x00020000; // Winuser.h中定义
      CreateParams cp = base.CreateParams;
      cp.Style = cp.Style | WS_MINIMIZEBOX; // 允许最小化操作
      return cp;
   }
}

发表评论

Powered by WordPress | Theme Revised from Doo

苏ICP备18047621号

Copyright © 2017-2021 追光者博客