private void WmNCCalcSize(ref Message m) { // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowmessages/wm_nccalcsize.asp // http://groups.google.pl/groups?selm=OnRNaGfDEHA.1600%40tk2msftngp13.phx.gbl var r = (RECT)Marshal.PtrToStructure(m.LParam, typeof(RECT)); var max = MinMaxState == FormWindowState.Maximized; if (max) { var x = NativeMethods.GetSystemMetrics(NativeConstants.SM_CXSIZEFRAME); var y = NativeMethods.GetSystemMetrics(NativeConstants.SM_CYSIZEFRAME); var p = NativeMethods.GetSystemMetrics(NativeConstants.SM_CXPADDEDBORDER); var w = x + p; var h = y + p; r.left += w; r.top += h; r.right -= w; r.bottom -= h; var appBarData = new APPBARDATA(); appBarData.cbSize = Marshal.SizeOf(typeof(APPBARDATA)); var autohide = (NativeMethods.SHAppBarMessage(NativeConstants.ABM_GETSTATE, ref appBarData) & NativeConstants.ABS_AUTOHIDE) != 0; if (autohide) r.bottom -= 1; Marshal.StructureToPtr(r, m.LParam, true); } m.Result = IntPtr.Zero; }
public static extern int SHAppBarMessage(uint dwMessage, [In] ref APPBARDATA pData);