Updated Office2003 themes for 9x/2000 |
Post Reply |
Author | |
Ark42
Senior Member Joined: 20 October 2003 Status: Offline Points: 291 |
Post Options
Thanks(0)
Posted: 14 May 2004 at 2:36am |
class CXTPOffice2003ThemeEx : public CXTPOffice2003Theme { public: CXTPOffice2003ThemeEx(BOOL bGreyToBlue = TRUE, BOOL bYellowHighlight = FALSE); BOOL m_bGreyToBlue, m_bYellowHighlight; protected: virtual void RefreshMetrics(); }; class CXTPDockingPaneOffice2003ThemeEx : public CXTPDockingPaneOffice2003Theme { public: CXTPDockingPaneOffice2003ThemeEx(BOOL bGreyToBlue = TRUE); BOOL m_bGreyToBlue; protected: virtual void RefreshMetrics(); }; class CColorSetOffice2003Ex : public CXTPTabPaintManager::CColorSetOffice2003 { public: CColorSetOffice2003Ex(BOOL bGreyToBlue = TRUE); BOOL m_bGreyToBlue; protected: virtual void RefreshMetrics(); }; class CXTButtonThemeOffice2003Ex : public CXTButtonThemeOffice2003 { public: CXTButtonThemeOffice2003Ex(BOOL bWordTheme = FALSE, BOOL bGreyToBlue = TRUE, BOOL bYellowHighlight = FALSE); BOOL m_bGreyToBlue, m_bYellowHighlight; protected: virtual void RefreshMetrics(); }; //////////////////////////////////////////////////////// //////////////////// // CXTPOffice2003ThemeEx CXTPOffice2003ThemeEx::CXTPOffice2003ThemeEx(BOOL bGreyToBlue, BOOL bYellowHighlight) { m_bGreyToBlue = bGreyToBlue; m_bYellowHighlight = bYellowHighlight; RefreshMetrics(); } void CXTPOffice2003ThemeEx::RefreshMetrics() { CXTPOffice2003Theme::RefreshMetrics(); if( !m_bLunaTheme ) { CXTPColorManager *pClrMgr = XTPColorManager(); COLORREF btn = pClrMgr->GetColor(COLOR_BTNFACE); if( m_bGreyToBlue && (btn == RGB(192, 192, 192) || btn == RGB(212, 208, 200)) ) { m_clrDockBarDark = RGB(158, 190, 245); m_clrDockBarLight = RGB(196, 218, 250); m_clrCommandBarDark = RGB(129, 169, 226); m_clrCommandBarLight = RGB(221, 236, 254); m_clrPopupDark = RGB(227, 239, 255); m_clrPopupLight = RGB(147, 181, 231); m_crlToolbarShadow = RGB(59, 97, 156); m_crlFloatingGripper = RGB(42, 102, 201); m_crlExpandNormalDark = RGB(0, 53, 145); m_crlExpandNormalLight = RGB(117, 166, 241); m_clrMenuExpandedDark = RGB(121, 161, 220); m_clrMenuExpandedLight = RGB(203, 221, 246); m_clrCircleDark = RGB(129, 169, 226); m_clrCircleLight = RGB(227, 239, 254); m_clrStatusPane = RGB(221, 221, 221); m_bLunaTheme = TRUE; m_arrColor[0] = RGB(0, 0, 0); m_arrColor[1] = RGB(0, 78, 152); m_arrColor[2] = RGB(0, 84, 227); m_arrColor[3] = RGB(122, 150, 223); m_arrColor[4] = RGB(255, 255, 255); m_arrColor[5] = RGB(255, 255, 255); m_arrColor[6] = RGB(0, 0, 0); m_arrColor[7] = RGB(0, 0, 0); m_arrColor[8] = RGB(0, 0, 0); m_arrColor[9] = RGB(255, 255, 255); m_arrColor[10] = RGB(212, 208, 200); m_arrColor[11] = RGB(212, 208, 200); m_arrColor[12] = RGB(128, 128, 128); m_arrColor[13] = RGB(49, 106, 197); m_arrColor[14] = RGB(255, 255, 255); // m_arrColor[15] = RGB(236, 233, 216); m_arrColor[15] = btn; m_arrColor[16] = RGB(172, 168, 153); m_arrColor[17] = RGB(172, 168, 153); m_arrColor[18] = RGB(0, 0, 0); m_arrColor[19] = RGB(216, 228, 248); m_arrColor[20] = RGB(255, 255, 255); m_arrColor[21] = RGB(113, 111, 100); m_arrColor[22] = RGB(251, 248, 231); m_arrColor[23] = RGB(0, 0, 0); m_arrColor[24] = RGB(255, 255, 225); m_arrColor[25] = RGB(181, 181, 181); m_arrColor[26] = RGB(0, 0, 128); m_arrColor[27] = RGB(61, 149, 255); m_arrColor[28] = RGB(0, 0, 0); m_arrColor[29] = RGB(0, 0, 0); m_arrColor[30] = RGB(158, 190, 245); m_arrColor[31] = RGB(255, 238, 194); m_arrColor[32] = RGB(0, 0, 128); m_arrColor[33] = RGB(254, 128, 62); m_arrColor[34] = RGB(144, 157, 178); m_arrColor[35] = RGB(197, 194, 184); m_arrColor[36] = RGB(255, 192, 111); m_arrColor[37] = RGB(0, 0, 128); m_arrColor[38] = RGB(39, 65, 118); m_arrColor[39] = RGB(106, 140, 203); m_arrColor[40] = RGB(109, 150, 208); m_arrColor[41] = RGB(246, 246, 246); m_arrColor[42] = RGB(230, 227, 210); m_arrColor[43] = RGB(0, 45, 150); m_arrColor[44] = RGB(0, 0, 0); m_arrColor[45] = RGB(0, 0, 0); m_arrColor[46] = RGB(0, 0, 0); m_arrColor[47] = RGB(0, 0, 0); m_arrColor[48] = RGB(218, 233, 255); m_arrColor[49] = RGB(129, 126, 114); m_arrColor[50] = RGB(0, 0, 128); m_arrColor[51] = RGB(216, 231, 252); m_arrColor[52] = RGB(158, 190, 245); m_arrColor[53] = RGB(203, 225, 252); m_arrColor[54] = RGB(0, 45, 150); m_arrColor[55] = RGB(196, 218, 250); } else if(m_bYellowHighlight) { m_arrColor[31] = RGB(255, 238, 194); m_arrColor[33] = RGB(254, 128, 62); m_arrColor[36] = RGB(255, 192, 111); m_bLunaTheme = TRUE; } } } //////////////////////////////////////////////////////// //////////////////// // CXTPDockingPaneOffice2003ThemeEx CXTPDockingPaneOffice2003ThemeEx::CXTPDockingPaneOffice2 003ThemeEx(BOOL bGreyToBlue) { m_bGreyToBlue = bGreyToBlue; RefreshMetrics(); } void CXTPDockingPaneOffice2003ThemeEx::RefreshMetrics() { CXTPDockingPaneOffice2003Theme::RefreshMetrics(); if( !m_bLunaTheme ) { CXTPColorManager *pClrMgr = XTPColorManager(); COLORREF btn = pClrMgr->GetColor(COLOR_BTNFACE); if( m_bGreyToBlue && (btn == RGB(192, 192, 192) || btn == RGB(212, 208, 200)) ) { m_clrCommandBarDark = RGB(129, 169, 226); m_clrCommandBarLight = RGB(221, 236, 254); m_bLunaTheme = TRUE; m_arrColor[0] = RGB(0, 0, 0); m_arrColor[1] = RGB(0, 78, 152); m_arrColor[2] = RGB(0, 84, 227); m_arrColor[3] = RGB(122, 150, 223); m_arrColor[4] = RGB(255, 255, 255); m_arrColor[5] = RGB(255, 255, 255); m_arrColor[6] = RGB(0, 0, 0); m_arrColor[7] = RGB(0, 0, 0); m_arrColor[8] = RGB(0, 0, 0); m_arrColor[9] = RGB(255, 255, 255); m_arrColor[10] = RGB(212, 208, 200); m_arrColor[11] = RGB(212, 208, 200); m_arrColor[12] = RGB(128, 128, 128); m_arrColor[13] = RGB(49, 106, 197); m_arrColor[14] = RGB(255, 255, 255); // m_arrColor[15] = RGB(236, 233, 216); m_arrColor[15] = btn; m_arrColor[16] = RGB(172, 168, 153); m_arrColor[17] = RGB(172, 168, 153); m_arrColor[18] = RGB(0, 0, 0); m_arrColor[19] = RGB(216, 228, 248); m_arrColor[20] = RGB(255, 255, 255); m_arrColor[21] = RGB(113, 111, 100); m_arrColor[22] = RGB(251, 248, 231); m_arrColor[23] = RGB(0, 0, 0); m_arrColor[24] = RGB(255, 255, 225); m_arrColor[25] = RGB(181, 181, 181); m_arrColor[26] = RGB(0, 0, 128); m_arrColor[27] = RGB(61, 149, 255); m_arrColor[28] = RGB(0, 0, 0); m_arrColor[29] = RGB(0, 0, 0); m_arrColor[30] = RGB(158, 190, 245); m_arrColor[31] = RGB(255, 238, 194); m_arrColor[32] = RGB(0, 0, 128); m_arrColor[33] = RGB(254, 128, 62); m_arrColor[34] = RGB(144, 157, 178); m_arrColor[35] = RGB(197, 194, 184); m_arrColor[36] = RGB(255, 192, 111); m_arrColor[37] = RGB(0, 0, 128); m_arrColor[38] = RGB(39, 65, 118); m_arrColor[39] = RGB(106, 140, 203); m_arrColor[40] = RGB(109, 150, 208); m_arrColor[41] = RGB(246, 246, 246); m_arrColor[42] = RGB(230, 227, 210); m_arrColor[43] = RGB(0, 45, 150); m_arrColor[44] = RGB(0, 0, 0); m_arrColor[45] = RGB(0, 0, 0); m_arrColor[46] = RGB(0, 0, 0); m_arrColor[47] = RGB(0, 0, 0); m_arrColor[48] = RGB(218, 233, 255); m_arrColor[49] = RGB(129, 126, 114); m_arrColor[50] = RGB(0, 0, 128); m_arrColor[51] = RGB(216, 231, 252); m_arrColor[52] = RGB(158, 190, 245); m_arrColor[53] = RGB(203, 225, 252); m_arrColor[54] = RGB(0, 45, 150); m_arrColor[55] = RGB(196, 218, 250); } } } //////////////////////////////////////////////////////// //////////////////// // CColorSetOffice2003Ex CColorSetOffice2003Ex::CColorSetOffice2003Ex(BOOL bGreyToBlue) { m_bGreyToBlue = bGreyToBlue; // RefreshMetrics(); } void CColorSetOffice2003Ex::RefreshMetrics() { CColorSetOffice2003::RefreshMetrics(); if( !m_bLunaTheme ) { CXTPColorManager *pClrMgr = XTPColorManager(); COLORREF btn = pClrMgr->GetColor(COLOR_BTNFACE); if( m_bGreyToBlue && (btn == RGB(192, 192, 192) || btn == RGB(212, 208, 200)) ) { m_clrHeaderFace.clrLight = RGB(196, 218, 250); m_clrHeaderFace.clrDark = RGB(252, 253, 254); m_clrAutoHideFace.clrLight = RGB(158, 190, 245); m_clrAutoHideFace.clrDark = RGB(196, 218, 250); m_clrFrameBorder = RGB(59, 97, 156); m_clrControlFace = RGB(236, 233, 216); m_clrHighlight = RGB(255, 255, 255); m_clrButtonSelected = RGB(255, 194, 115); m_clrButtonNormal = RGB(162, 192, 246); m_clrNormalText = RGB(0, 0, 0); m_clrInActiveText = RGB(0, 0, 0); m_clrSelectedText = RGB(0, 0, 0); m_clrHighlightText = RGB(0, 0, 0); m_clrDisabledText = RGB(172, 168, 153); m_clrButtonHighlighted = RGB(255, 240, 201); m_clrNavigateButtonBorder = RGB(0, 0, 128); m_bLunaTheme = TRUE; } } } //////////////////////////////////////////////////////// //////////////////// // CXTButtonThemeOffice2003Ex CXTButtonThemeOffice2003Ex::CXTButtonThemeOffice2003Ex(B OOL bWordTheme, BOOL bGreyToBlue, BOOL bYellowHighlight) { m_bWordTheme = bWordTheme; m_bGreyToBlue = bGreyToBlue; m_bYellowHighlight = bYellowHighlight; RefreshMetrics(); } void CXTButtonThemeOffice2003Ex::RefreshMetrics() { CXTButtonThemeOffice2003::RefreshMetrics(); if( XTPDrawHelpers()->GetCurrentSystemTheme() == xtpSystemThemeUnknown ) { CXTPColorManager *pClrMgr = XTPColorManager(); COLORREF btn = pClrMgr->GetColor(COLOR_BTNFACE); if( m_bGreyToBlue && (btn == RGB(192, 192, 192) || btn == RGB(212, 208, 200)) ) { m_crBack = RGB(169, 199, 240); m_crText = RGB(0, 0, 0); m_crTextDisabled = RGB(172, 168, 153); m_crBorderHilite = RGB(0, 0, 128); m_crBorderShadow = RGB(127, 157, 185); m_crBorder3DHilite = RGB(255, 255, 255); m_crBorder3DShadow = RGB(113, 111, 100); m_crBackPushed = RGB(254, 128, 62); m_crBackHilite = RGB(255, 238, 194); m_crTextPushed = RGB(0, 0, 0); m_crTextHilite = RGB(0, 0, 0); } else if(m_bYellowHighlight) { m_crBackPushed = RGB(254, 128, 62); m_crBackHilite = RGB(255, 238, 194); m_crTextPushed = RGB(0, 0, 0); m_crTextHilite = RGB(0, 0, 0); } } } sample usages, since there is now several different 2003Ex classes to theme different things (buttons, toolbars, dockbars, dockbars tab panel): xtAfxData.bXPMode = TRUE; m_themeManager.SetTheme(xtThemeOffice2003); m_themeManager.SetButtonTheme(new CXTButtonThemeOffice2003Ex(TRUE)); pCommandBars->SetPaintManager(new CXTPOffice2003ThemeEx()); m_paneManager.SetCustomTheme(new CXTPDockingPaneOffice2003ThemeEx()); m_paneManager.GetPaintManager()->m_pT abPaintManager->SetColorSet(new CColorSetOffice2003Ex()) ; m_paneManager.GetPaintManager()->m_pP anelPaintManager->SetColorSet(new CColorSetOffice2003Ex( )); |
|
spike
Groupie Joined: 13 May 2003 Location: United States Status: Offline Points: 48 |
Post Options
Thanks(0)
|
What version is this for?
|
|
Ark42
Senior Member Joined: 20 October 2003 Status: Offline Points: 291 |
Post Options
Thanks(0)
|
Latest, 8.70 |
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
In your sample usage code you are using a m_themeManager object - of what type is m_themeManager? You are using: |
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
I found the type of the m_themeManager: CXTThemeManager. But, when using your sample code I am loosing the Office2003 colors and design on my MDI tabs :( |
|
Ark42
Senior Member Joined: 20 October 2003 Status: Offline Points: 291 |
Post Options
Thanks(0)
|
Dont enable that call to RefreshMetrics, its commented out for a reason. I don't believe I provided any Office2003Ex theme for MDI tabs, so you are on your own to design that. The CXTThemeManager is for CXTButton types, and the CColorSetOffice2003Ex is for the docking pane tab bar. |
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
Ok. Please let me/us know if you implement any Office2003Ex theme for the MDI tabs Your implementations are of great value! Hopefully Codejock will implement support for Office2003 themes for Windows 9x/2000 in their next release. |
|
Ark42
Senior Member Joined: 20 October 2003 Status: Offline Points: 291 |
Post Options
Thanks(0)
|
I probably won't implement any for any parts I don't use, and I think I've implemented all I need so far. Codejock will probably not implement Office2003Ex themes like I did since its a ton of hardcoded values that mimic the values retrieved from DLLs that only exist under XP. Its not really that hard though, you just have to have an XP machine to get the values from, write them all out to a text file. Use any of my examples as a base. You pretty much only need to derive a class with a tiny constructer and RefreshMetrics() that just sets all the color values and you're done. |
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
In XTP Toolkit Pro 9.50, the CXTThemeManager constructor is private inside the CXTThemeManager class. It is no longer possible to use the following code: MainFrm.h: MainFrm.cpp: PS: This code is used to get Office2003 theme style in Windows 2000. Please help! |
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
When running my application with a memory leak checker, I get the following program error detected: Memory Leak Leaving Scope: Variable references address 0x037E8600 (176) allocated by global_operator_new. This error is related to the following code line in OnCreate in MainFrm.cpp:
|
|
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
1. Frode, you can use global theme Manager:
XTThemeManager()->SetTheme(xtThemeOffice2003); XTThemeManager()->SetButtonTheme(new CXTButtonThemeOffice2003Ex(TRUE)); 2. You create new CXTPTabPaintManager, where you attach it? |
|
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
Oleg, the CXTPTabPaintManager is created and attached in OnCreate in Main Frame: OnCreate in MainFrm.cpp: // Tabview: VERIFY(m_MTIClientWnd.Attach(this)); |
|
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
To Frode: I create new application using Wizard, copy your code and don't see any leaks.
To all: from 9.10 you can use SetLunaTheme method to emulate blue/silver/olive themes for all Toolkit Pro components: CMainFrame::CMainFrame() { XTPColorManager()->SetLunaTheme(xtpSystemThemeBlue); } |
|
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
Oleg, does this XTPColorManager()-SetLunaTheme(xtpSystemThemeBlue) work for Windows 2000 as well as for Windows XP?
|
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
Hello. The SetButtonTheme does not work with version 9.60 - not a member of 'CXTThemeManager'. Updated code for version 9.60: XTAuxData().bXPMode = TRUE; Frode. |
|
Ark42
Senior Member Joined: 20 October 2003 Status: Offline Points: 291 |
Post Options
Thanks(0)
|
Um, commenting it out doesn't help anything. The correct 'update' it to use CXTButton::SetDefaultTheme(new CXTButtonThemeOffice2003Ex()); instead. |
|
Ark42
Senior Member Joined: 20 October 2003 Status: Offline Points: 291 |
Post Options
Thanks(0)
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
I understand that commenting it out doesn't help anything
Is this type of changes documented any place - what type of functions that is removed from one version to the other? I have already included the new code from http://forum.codejock.com/forum_posts.asp?TID=1751&K W=2, but I guess I still have to use the CXTButton::SetDefaultTheme function in my main frame!? XTAuxData().bXPMode = TRUE; XTThemeManager()->SetTheme(xtThemeOffice2003); CXTButton::SetDefaultTheme(new CXTButtonThemeOffice2003Ex()); pCommandBars->SetPaintManager(new CXTPOffice2003ThemeEx()); m_paneManager.SetCustomTheme(new CXTPDockingPaneOffice2003ThemeEx()); m_paneManager.GetPaintManager()->GetTabPaintManager()-> ; ;SetColorSet(new CColorSetOffice2003Ex()) ; m_paneManager.GetPaintManager()->GetPanelPaintManager()-& amp; gt;SetColorSet(new CColorSetOffice2003Ex()); |
|
Ark42
Senior Member Joined: 20 October 2003 Status: Offline Points: 291 |
Post Options
Thanks(0)
|
You have to include the CXTButton::SetDefaultTheme if you want to use the 2003 theme for CXTButtons I'm sure its documented someplace. I found the change by looking at the samples basically. I'm not sure how much of this code is needed anymore. v9.60 has the orange caption bar for the docking panes now, and they said you can use the blue theme without having to create custom themes now I think. The only thing you really need is the new code in the other post for the floating toolbars. |
|
Kenneth
Senior Member Joined: 23 May 2004 Location: United States Status: Offline Points: 256 |
Post Options
Thanks(0)
|
Ark42 I am using your code, and it works very well. Thank you for a great job. I have updated to the latest toolkitpro, and now the caption bar for my docking panes on Windows Me do not have the correct color for the Office2003 theme. I always get shades of gray. Have you seen this? Ken
|
|
Kenneth
Senior Member Joined: 23 May 2004 Location: United States Status: Offline Points: 256 |
Post Options
Thanks(0)
|
Ah, I see now that the SetLunaTheme() function takes care of all this now for XP, W2K and Windows 98/ME. Thanks Oleg. Ken
|
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
How to use the CXTPColorManager::SetLunaTheme(xtpSystemThemeBlue)
function (I gor an error saying "illegal call of non-static member
function")...
Is the SetLunaTheme function changing the hole Windows theme setting, or is it only changing the them for the specific application? Frode. |
|
Kenneth
Senior Member Joined: 23 May 2004 Location: United States Status: Offline Points: 256 |
Post Options
Thanks(0)
|
I use: XTPColorManager()->SetLunaTheme(xtpSystemThemeBlue); and it only sets it for the application. |
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
When calling XTPColorManager()->SetLunaThene(xtpSystemThemeBlue) in
Windows 2000, all splitters between split windows becomes blue - this
is not good. The splitters should be grey as they are in Windows XP.
|
|
Kenneth
Senior Member Joined: 23 May 2004 Location: United States Status: Offline Points: 256 |
Post Options
Thanks(0)
|
I do see this, but only where the splitter is next to a docking pane caption. Don't know if that is correct or not, but SetLunaTheme solves a lot of problems without having to have special theme classes for Windows 98/ME. In addition, it looks that way on XP also. So, my application looks exactly the same on XP, W2K, 98 and ME.
|
|
Frode
Groupie Joined: 22 April 2004 Location: Norway Status: Offline Points: 42 |
Post Options
Thanks(0)
|
When using SetLunaTheme, my application does not look the same on
Windows 2000 and Windows XP. On Windows XP, the splitters are grey,
while they are ligth blue on Windows 2000 (all splitters - not only
those next to a docing pane).
Another question: I have a number of contecx menus (rigth-click menus). How can I get a blue left "margin" in these context menus (as I get in the menus from the menubar) - I only get a grey shaded left "margin" in these context menus? |
|
Kenneth
Senior Member Joined: 23 May 2004 Location: United States Status: Offline Points: 256 |
Post Options
Thanks(0)
|
In my application, the splitters are gray, except as I mentioned, those next to a docking pane caption are blue. I also get the correct popup context menu, that is they look exactly as a normal menu, a shaded blue left margin with icons. Futhermore, they look all the same on XP, 2000, and 98. When I switch theme to olive or silver, the same holds true, with blue turning to the respective color specified in the SetLunaTheme.
|
|
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |