Exemple #1
0
        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);