예제 #1
0
        public int UxThemeGetThemeTextMetrics(IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, out TextMetrics result)
        {
            XplatUIWin32.TEXTMETRIC metrics;

            int hresult = UXTheme.GetThemeTextMetrics(hTheme, dc.GetHdc(), iPartId, iStateId, out metrics);

            dc.ReleaseHdc();

            TextMetrics retval = new TextMetrics();

            retval.Ascent           = metrics.tmAscent;
            retval.AverageCharWidth = metrics.tmAveCharWidth;
            retval.BreakChar        = (char)metrics.tmBreakChar;
            retval.CharSet          = (TextMetricsCharacterSet)metrics.tmCharSet;
            retval.DefaultChar      = (char)metrics.tmDefaultChar;
            retval.Descent          = metrics.tmDescent;
            retval.DigitizedAspectX = metrics.tmDigitizedAspectX;
            retval.DigitizedAspectY = metrics.tmDigitizedAspectY;
            retval.ExternalLeading  = metrics.tmExternalLeading;
            retval.FirstChar        = (char)metrics.tmFirstChar;
            retval.Height           = metrics.tmHeight;
            retval.InternalLeading  = metrics.tmInternalLeading;
            retval.Italic           = metrics.tmItalic == 0 ? false : true;
            retval.LastChar         = (char)metrics.tmLastChar;
            retval.MaxCharWidth     = metrics.tmMaxCharWidth;
            retval.Overhang         = metrics.tmOverhang;
            retval.PitchAndFamily   = (TextMetricsPitchAndFamilyValues)metrics.tmPitchAndFamily;
            retval.StruckOut        = metrics.tmStruckOut == 0 ? false : true;
            retval.Underlined       = metrics.tmUnderlined == 0 ? false : true;
            retval.Weight           = metrics.tmWeight;

            result = retval;
            return(hresult);
        }
예제 #2
0
        public int UxThemeGetThemePosition(IntPtr hTheme, int iPartId, int iStateId, PointProperty prop, out Point_ result)
        {
            POINT retval;
            int   hresult = UXTheme.GetThemePosition(hTheme, iPartId, iStateId, (int)prop, out retval);

            result = retval.ToPoint();
            return(hresult);
        }
예제 #3
0
        public int UxThemeGetThemeString(IntPtr hTheme, int iPartId, int iStateId, StringProperty prop, out string result)
        {
            Text.StringBuilder sb = new Text.StringBuilder(255);
            int hresult           = UXTheme.GetThemeString(hTheme, iPartId, iStateId, (int)prop, sb, sb.Capacity);

            result = sb.ToString();
            return(hresult);
        }
예제 #4
0
        public int UxThemeGetThemeInt(IntPtr hTheme, int iPartId, int iStateId, IntegerProperty prop, out int result)
        {
            int retval;
            int hresult = UXTheme.GetThemeInt(hTheme, iPartId, iStateId, (int)prop, out retval);

            result = retval;
            return(hresult);
        }
예제 #5
0
        public int UxThemeGetThemeEnumValue(IntPtr hTheme, int iPartId, int iStateId, EnumProperty prop, out int result)
        {
            int retval;
            int hresult = UXTheme.GetThemeEnumValue(hTheme, iPartId, iStateId, (int)prop, out retval);

            result = retval;
            return(hresult);
        }
예제 #6
0
        public int UxThemeGetThemeBool(IntPtr hTheme, int iPartId, int iStateId, BooleanProperty prop, out bool result)
        {
            int retval;
            int hresult = UXTheme.GetThemeBool(hTheme, iPartId, iStateId, (int)prop, out retval);

            result = retval == 0 ? false : true;
            return(hresult);
        }
예제 #7
0
        public int UxThemeDrawThemeText(IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, string text, TextFormatFlags textFlags, Rectangle_ bounds)
        {
            XplatUIWin32.RECT BoundsRect = XplatUIWin32.RECT.FromRectangle(bounds);

            int result = UXTheme.DrawThemeText(hTheme, dc.GetHdc(), iPartId, iStateId, text, text.Length, (uint)textFlags, 0, ref BoundsRect);

            dc.ReleaseHdc();
            return(result);
        }
예제 #8
0
        public int UxThemeGetThemeColor(IntPtr hTheme, int iPartId, int iStateId, ColorProperty prop, out Color_ result)
        {
            int retval;
            int hresult = UXTheme.GetThemeColor(hTheme, iPartId, iStateId, (int)prop, out retval);

            result = System.Drawing.Color_.FromArgb((int)(0x000000FFU & retval),
                                                    (int)(0x0000FF00U & retval) >> 8, (int)(0x00FF0000U & retval) >> 16);
            return(hresult);
        }
예제 #9
0
        public int UxThemeDrawThemeBackground(IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle_ bounds)
        {
            XplatUIWin32.RECT BoundsRect = XplatUIWin32.RECT.FromRectangle(bounds);

            int result = UXTheme.DrawThemeBackground(hTheme, dc.GetHdc(), iPartId, iStateId, ref BoundsRect, IntPtr.Zero);

            dc.ReleaseHdc();
            return(result);
        }
예제 #10
0
        public int UxThemeDrawThemeEdge(IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle_ bounds, Edges edges, EdgeStyle style, EdgeEffects effects, out Rectangle_ result)
        {
            XplatUIWin32.RECT BoundsRect = XplatUIWin32.RECT.FromRectangle(bounds);
            XplatUIWin32.RECT retval;

            int hresult = UXTheme.DrawThemeEdge(hTheme, dc.GetHdc(), iPartId, iStateId, ref BoundsRect, (uint)style, (uint)edges + (uint)effects, out retval);

            dc.ReleaseHdc();
            result = retval.ToRectangle();
            return(hresult);
        }
예제 #11
0
        public int UxThemeGetThemeTextExtent(IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, string textToDraw, TextFormatFlags flags, out Rectangle_ result)
        {
            XplatUIWin32.RECT retval;

            int hresult = UXTheme.GetThemeTextExtent(hTheme, dc.GetHdc(), iPartId, iStateId, textToDraw, textToDraw.Length, (int)flags, 0, out retval);

            dc.ReleaseHdc();

            result = retval.ToRectangle();
            return(hresult);
        }
예제 #12
0
        public int UxThemeGetThemePartSize(IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, ThemeSizeType type, out Size_ result)
        {
            UXTheme.SIZE retval;

            int hresult = UXTheme.GetThemePartSize(hTheme, dc.GetHdc(), iPartId, iStateId, IntPtr.Zero, (int)type, out retval);

            dc.ReleaseHdc();

            result = retval.ToSize();
            return(hresult);
        }
예제 #13
0
        public int UxThemeGetThemePartSize(IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle_ bounds, ThemeSizeType type, out Size_ result)
        {
            XplatUIWin32.RECT BoundsRect = XplatUIWin32.RECT.FromRectangle(bounds);
            UXTheme.SIZE      retval;

            int hresult = UXTheme.GetThemePartSize(hTheme, dc.GetHdc(), iPartId, iStateId, ref BoundsRect, (int)type, out retval);

            dc.ReleaseHdc();

            result = retval.ToSize();
            return(hresult);
        }
예제 #14
0
        public int UxThemeGetThemeMargins(IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, MarginProperty prop, out Padding result)
        {
            UXTheme.MARGINS   retval = new UXTheme.MARGINS();
            XplatUIWin32.RECT BoundsRect;

            int hresult = UXTheme.GetThemeMargins(hTheme, dc.GetHdc(), iPartId, iStateId, (int)prop, out BoundsRect, out retval);

            dc.ReleaseHdc();

            result = retval.ToPadding();
            return(hresult);
        }
예제 #15
0
        public int UxThemeHitTestThemeBackground(IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, HitTestOptions options, Rectangle_ backgroundRectangle, IntPtr hrgn, Point_ pt, out HitTestCode result)
        {
            XplatUIWin32.RECT BoundsRect = XplatUIWin32.RECT.FromRectangle(backgroundRectangle);
            HitTestCode       retval;

            int hresult = UXTheme.HitTestThemeBackground(hTheme, dc.GetHdc(), iPartId, iStateId, (uint)options, ref BoundsRect, hrgn, new POINT(pt.X, pt.Y), out retval);

            dc.ReleaseHdc();

            result = (HitTestCode)retval;
            return(hresult);
        }
예제 #16
0
        public int UxThemeGetThemeBackgroundContentRect(IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle_ bounds, out Rectangle_ result)
        {
            XplatUIWin32.RECT BoundsRect = XplatUIWin32.RECT.FromRectangle(bounds);
            XplatUIWin32.RECT retval;

            int hresult = UXTheme.GetThemeBackgroundContentRect(hTheme, dc.GetHdc(), iPartId, iStateId, ref BoundsRect, out retval);

            dc.ReleaseHdc();

            result = retval.ToRectangle();
            return(hresult);
        }
예제 #17
0
        public int UxThemeGetThemeBackgroundRegion(IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle bounds, out Region result)
        {
            XplatUIWin32.RECT BoundsRect = XplatUIWin32.RECT.FromRectangle(bounds);
            IntPtr            retval;

            int hresult = UXTheme.GetThemeBackgroundRegion(hTheme, dc.GetHdc(), iPartId, iStateId, ref BoundsRect, out retval);

            dc.ReleaseHdc();

            result = Region.FromHrgn(retval);
            return(hresult);
        }
예제 #18
0
        public void VisualStyleRendererDrawBackgroundExcludingArea(IntPtr theme, IDeviceContext dc, int part, int state, Rectangle_ bounds, Rectangle_ excludedArea)
        {
            XplatUIWin32.RECT bounds_rect = XplatUIWin32.RECT.FromRectangle(bounds);
            IntPtr            hdc         = dc.GetHdc();

            XplatUIWin32.Win32ExcludeClipRect(hdc, excludedArea.Left, excludedArea.Top, excludedArea.Right, excludedArea.Bottom);
            UXTheme.DrawThemeBackground(theme, hdc, part, state, ref bounds_rect, IntPtr.Zero);
            IntPtr hrgn = XplatUIWin32.Win32CreateRectRgn(excludedArea.Left, excludedArea.Top, excludedArea.Right, excludedArea.Bottom);

            XplatUIWin32.Win32ExtSelectClipRgn(hdc, hrgn, (int)ClipCombineMode.RGN_OR);
            XplatUIWin32.Win32DeleteObject(hrgn);
            dc.ReleaseHdc();
        }
예제 #19
0
        public int UxThemeDrawThemeParentBackground(IDeviceContext dc, Rectangle_ bounds, Control childControl)
        {
            int result;

            XplatUIWin32.RECT BoundsRect = XplatUIWin32.RECT.FromRectangle(bounds);

            using (Graphics g = Graphics.FromHwnd(childControl.Handle)) {
                IntPtr hdc = g.GetHdc();
                result = UXTheme.DrawThemeParentBackground(childControl.Handle, hdc, ref BoundsRect);
                g.ReleaseHdc(hdc);
            }

            return(result);
        }
예제 #20
0
        static string GetData(string propertyName)
        {
            Text.StringBuilder ThemeName = new Text.StringBuilder(260);
            Text.StringBuilder ColorName = new Text.StringBuilder(260);
            Text.StringBuilder SizeName  = new Text.StringBuilder(260);

            UXTheme.GetCurrentThemeName(ThemeName, ThemeName.Capacity, ColorName, ColorName.Capacity, SizeName, SizeName.Capacity);

            Text.StringBuilder PropertyValue = new Text.StringBuilder(260);

            UXTheme.GetThemeDocumentationProperty(ThemeName.ToString(), propertyName, PropertyValue, PropertyValue.Capacity);

            return(PropertyValue.ToString());
        }
예제 #21
0
 public bool UxThemeIsAppThemed()
 {
     return(UXTheme.IsAppThemed());
 }
예제 #22
0
 public bool UxThemeIsThemeActive()
 {
     return(UXTheme.IsThemeActive());
 }
예제 #23
0
 public bool UxThemeIsThemePartDefined(IntPtr hTheme, int iPartId)
 {
     return(UXTheme.IsThemePartDefined(hTheme, iPartId, 0));
 }
예제 #24
0
 public int UxThemeCloseThemeData(IntPtr hTheme)
 {
     return(UXTheme.CloseThemeData(hTheme));
 }
예제 #25
0
 public IntPtr UxThemeOpenThemeData(IntPtr hWnd, string classList)
 {
     return(UXTheme.OpenThemeData(hWnd, classList));
 }
예제 #26
0
        public bool UxThemeIsThemeBackgroundPartiallyTransparent(IntPtr hTheme, int iPartId, int iStateId)
        {
            int retval = UXTheme.IsThemeBackgroundPartiallyTransparent(hTheme, iPartId, iStateId);

            return(retval == 0 ? false : true);
        }