c# 無邊框窗體的邊框陰影
阿新 • • 發佈:2019-01-14
Windows API:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace BaseForm { public partial class FormEnumlator : Form { public FormEnumlator() { InitializeComponent(); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true); SetClassLong(this.Handle, GCL_STYLE, GetClassLong(this.Handle, GCL_STYLE) | CS_DropSHADOW); //API函式載入,實現窗體邊框陰影效果 Location = new Point(0,0); // this.StartPosition = FormStartPosition.Manual; } private bool _IsMouseDown; private Point _oldLocation; private Point _startPoint; #region 窗體邊框陰影效果變數申明 private const int CS_DropSHADOW = 0x20000; private const int GCL_STYLE = (-26); //宣告Win32 API [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); #endregion protected override void OnLoad(EventArgs e) { // base.OnLoad(e); } private void frmEnumlator_Load(object sender, EventArgs e) { } } }