internal Tuple<double, double> GetBorderWidthAndCaptionHeight() { var metrics = new NonClientMetrics(); metrics.cbSize = Marshal.SizeOf(metrics); NativeMethods.SystemParametersInfo(NativeMethods.SPI_GETNONCLIENTMETRICS, metrics.cbSize, ref metrics, 0); // [real border size] = 3 + scaling * borderWidth + scaling * paddedBorderWidth // * This function return a value scaled by scaling. var scaling = this.systemDpi.IsZero ? 1.0 : this.systemDpi.ScaleX; return Tuple.Create( (3.0 + (double)metrics.iBorderWidth + (double)metrics.iPaddedBorderWidth) / scaling, (double)metrics.iCaptionHeight / scaling); }
public static extern int SystemParametersInfo(int uAction, int uParam, ref NonClientMetrics lpvParam, int fuWinIni);