Beispiel #1
0
        internal static void InstallHooks()
        {
            if (_hooksInstalled)
            {
                return;
            }

            var sbr = new ScrollBarRenderer();
            var ttr = new ToolTipRenderer();
            var tvr = new TreeViewRenderer();

            _themeRenderers[sbr.HTheme] = sbr;
            _themeRenderers[ttr.HTheme] = ttr;
            _themeRenderers[tvr.HTheme] = tvr;

            try
            {
                (_getSysColorHook, GetSysColorOriginal) = InstallHook <GetSysColorDelegate>(
                    "user32.dll",
                    "GetSysColor",
                    GetSysColor);

                (_getSysColorBrushHook, GetSysColorBrushOriginal) = InstallHook <GetSysColorBrushDelegate>(
                    "user32.dll",
                    "GetSysColorBrush",
                    GetSysColorBrush);
            }
            catch
            {
                // If we fail, oh well, just keep the classic-mode colors then... better than nothing
                _getSysColorHook?.Dispose();
                _getSysColorBrushHook?.Dispose();
            }
            try
            {
                (_drawThemeBackgroundHook, DrawThemeBackgroundOriginal) = InstallHook <DrawThemeBackgroundDelegate>(
                    "uxtheme.dll",
                    "DrawThemeBackground",
                    DrawThemeBackgroundHook);

                (_getThemeColorHook, GetThemeColorOriginal) = InstallHook <GetThemeColorDelegate>(
                    "uxtheme.dll",
                    "GetThemeColor",
                    GetThemeColorHook);
            }
            catch
            {
                _drawThemeBackgroundHook?.Dispose();
                _getThemeColorHook?.Dispose();
            }

            _hooksInstalled = true;
        }
 public UserPaintStyleApplicator(IStyleSheet styleSheet, IControlRenderer controlRenderer, StyleApplicatorOptions options = StyleApplicatorOptions.Default) :
     base(styleSheet, options)
 {
     this.controlRenderer = controlRenderer;
     toolTipRenderer      = new ToolTipRenderer(styleSheet, styleRenderer);
 }