using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Exferia_Actualizacion_BD._3_Vistas { public partial class P_Personalizada : Form { #region Librerias Externas [DllImport("dwmapi.dll")] public static extern int DwmExtendFrameIntoClientArea(IntPtr hWnd, ref MARGINS pMarInset); [DllImport("dwmapi.dll")] public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize); [DllImport("dwmapi.dll")] public static extern int DwmIsCompositionEnabled(ref int pfEnabled); #endregion private bool g_bol_Seleccionada; private int g_int_X, g_int_Y; public P_Personalizada() { InitializeComponent(); } private void P_Personalizada_MouseDown(object sender, MouseEventArgs e) { g_bol_Seleccionada = true; g_int_X = e.X; g_int_Y = e.Y; } private void P_Personalizada_MouseMove(object sender, MouseEventArgs e) { if (g_bol_Seleccionada) { SetDesktopLocation(Cursor.Position.X - g_int_X, Cursor.Position.Y - g_int_Y); } } private void P_Personalizada_Resize(object sender, EventArgs e) { pnl_BordeIzquierdo.Size = new Size(2, Height - 3); pnl_BordeDerecho.Location = new Point(Width - 3, pnl_BordeDerecho.Location.Y); pnl_BordeDerecho.Size = new Size(2, Height - 3); pnl_BordeInferior.Location = new Point(pnl_BordeInferior.Location.X, Height - 3); pnl_BordeInferior.Size = new Size(Width - 4, 2); } private void P_Personalizada_MouseUp(object sender, MouseEventArgs e) { g_bol_Seleccionada = false; } #region Crear Sombra de la pantalla protected override void WndProc(ref Message m) { //Sombra de la pantalla .................................................. if (m.Msg == WM_NCPAINT)// box shadow { if (g_bol_HabilitarSombra) { var v = 2; DwmSetWindowAttribute(Handle, 2, ref v, 4); MARGINS margins = new MARGINS() { bottomHeight = 1, leftWidth = 1, rightWidth = 1, topHeight = 1 }; DwmExtendFrameIntoClientArea(Handle, ref margins); } } base.WndProc(ref m); } [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")] private static extern IntPtr CreateRoundRectRgn ( int nLeftRect, // x-coordinate of upper-left corner int nTopRect, // y-coordinate of upper-left corner int nRightRect, // x-coordinate of lower-right corner int nBottomRect, // y-coordinate of lower-right corner int nWidthEllipse, // height of ellipse int nHeightEllipse // width of ellipse ); private bool g_bol_HabilitarSombra; // variables for box shadow private const int CS_DROPSHADOW = 0x00020000; private const int WM_NCPAINT = 0x0085; private const int WM_ACTIVATEAPP = 0x001C; public struct MARGINS // struct for box shadow { public int leftWidth; public int rightWidth; public int topHeight; public int bottomHeight; } private const int WM_NCHITTEST = 0x84; // variables for dragging the form private const int HTCLIENT = 0x1; private const int HTCAPTION = 0x2; protected override CreateParams CreateParams { get { g_bol_HabilitarSombra = CheckAeroEnabled(); CreateParams cp = base.CreateParams; if (!g_bol_HabilitarSombra) cp.ClassStyle |= CS_DROPSHADOW; return cp; } } private bool CheckAeroEnabled() { if (Environment.OSVersion.Version.Major >= 6) { int enabled = 0; DwmIsCompositionEnabled(ref enabled); return (enabled == 1) ? true : false; } return false; } #endregion } }