--- /dev/null
+////////////////////////////////////////////////////\r
+// Mainfrm.cpp\r
+\r
+#include "stdafx.h"\r
+#include "mainfrm.h"\r
+#include "resource.h"\r
+\r
+\r
+// Definitions for the CMainFrame class\r
+CMainFrame::CMainFrame() : m_nColor(IDM_BLUE), m_bUseThemes(TRUE), m_bBandColors(TRUE), m_bFlatStyle(FALSE),\r
+ m_bBandsLeft(TRUE), m_bLockMenuBand(TRUE), m_bRoundBorders(TRUE),\r
+ m_bShortBands(TRUE), m_bUseLines(FALSE), m_bShowArrows(TRUE), m_bShowCards(TRUE)\r
+{\r
+ // Constructor for CMainFrame. Its called after CFrame's constructor\r
+\r
+ //Set m_View as the view window of the frame\r
+ SetView(m_View);\r
+\r
+ // Set the registry key name, and load the initial window position\r
+ // Use a registry key name like "CompanyName\\Application"\r
+ LoadRegistrySettings(_T("Win32++\\Themes Sample"));\r
+}\r
+\r
+CMainFrame::~CMainFrame()\r
+{\r
+ // Destructor for CMainFrame.\r
+}\r
+\r
+void CMainFrame::AddCombo()\r
+{\r
+ // We'll be placing the ComboBoxEx control over the 'File Save' toolbar button\r
+ int nComboWidth = 120;\r
+ CToolBar& TB = GetToolBar();\r
+ if (TB.CommandToIndex(IDM_FILE_SAVE) < 0) return;\r
+\r
+ TB.SetButtonStyle(IDM_FILE_SAVE, TBSTYLE_SEP); // Convert the button to a separator\r
+ TB.SetButtonWidth(IDM_FILE_SAVE, nComboWidth);\r
+\r
+ // Determine the size and position of the ComboBox\r
+ int nIndex = TB.CommandToIndex(IDM_FILE_SAVE);\r
+ CRect rc = TB.GetItemRect(nIndex);\r
+\r
+ // Create and position the ComboboxEx window\r
+ m_ComboBoxEx.Create(&TB);\r
+ m_ComboBoxEx.SetWindowPos(NULL, rc, SWP_NOACTIVATE);\r
+\r
+ // Set ComboBox Height\r
+ m_ComboBoxEx.SendMessage(CB_SETITEMHEIGHT, (WPARAM)-1, (LPARAM)rc.Height()-6);\r
+\r
+ m_ComboBoxEx.AddItems();\r
+ RecalcLayout();\r
+}\r
+\r
+void CMainFrame::ChooseColor(UINT nColor)\r
+{\r
+ CToolBar& TB = GetToolBar();\r
+ CMenuBar& MB = GetMenuBar();\r
+ m_nColor = nColor;\r
+\r
+ switch (nColor)\r
+ {\r
+ case IDM_MODERN:\r
+ {\r
+ SetReBarTheme( RGB(225, 230, 255), RGB(240, 242, 250), RGB(248, 248, 248), RGB(180, 200, 230) );\r
+\r
+ ToolBarTheme tt = {TRUE, RGB(180, 250, 255), RGB(140, 190, 255), RGB(150, 220, 255), RGB(80, 100, 255), RGB(127, 127, 255)};\r
+ TB.SetToolBarTheme(tt);\r
+ Arrows.SetToolBarTheme(tt);\r
+ Cards.SetToolBarTheme(tt);\r
+\r
+ MenuTheme mt = {TRUE, RGB(180, 250, 255), RGB(140, 190, 255), RGB(240, 250, 255), RGB(120, 170, 220), RGB(127, 127, 255)};\r
+ MB.SetMenuBarTheme(mt);\r
+ SetMenuTheme(mt);\r
+ }\r
+ break;\r
+ case IDM_BLUE: // ICY_BLUE Theme\r
+ {\r
+ SetReBarTheme( RGB(150,190,245), RGB(196,215,250), RGB(220,230,250), RGB( 70,130,220) );\r
+\r
+ ToolBarTheme tt = {TRUE, RGB(255, 230, 190), RGB(255, 190, 100), RGB(255, 140, 40), RGB(255, 180, 80), RGB(128, 128, 255)};\r
+ TB.SetToolBarTheme(tt);\r
+ Arrows.SetToolBarTheme(tt);\r
+ Cards.SetToolBarTheme(tt);\r
+\r
+ MenuTheme mt = {TRUE, RGB(255, 230, 190), RGB(255, 190, 100), RGB(150,190,245), RGB(220,230,250), RGB(128, 128, 200)};\r
+ MB.SetMenuBarTheme(mt);\r
+ SetMenuTheme(mt);\r
+ }\r
+ break;\r
+ case IDM_GREY: // Grey Theme\r
+ {\r
+ SetReBarTheme( RGB(210, 210, 200), RGB(238, 236, 224), RGB(248, 247, 243), RGB(195, 195, 172) );\r
+\r
+ ToolBarTheme tt = {TRUE, RGB(192, 210, 238), RGB(192, 210, 238), RGB(152, 181, 226), RGB(152, 181, 226), RGB(49, 106, 197)};\r
+ TB.SetToolBarTheme(tt);\r
+ Arrows.SetToolBarTheme(tt);\r
+ Cards.SetToolBarTheme(tt);\r
+\r
+ MenuTheme mt = {TRUE, RGB(196, 215, 250), RGB( 120, 180, 220), RGB(210, 210, 200), RGB(248, 247, 243), RGB(128, 128, 200)};\r
+ MB.SetMenuBarTheme(mt);\r
+ SetMenuTheme(mt);\r
+ }\r
+ break;\r
+ case IDM_OLIVE:\r
+ {\r
+ SetReBarTheme( RGB(160, 180, 80), RGB(180, 200, 100), RGB(200, 220, 120), RGB(80, 159, 78) );\r
+\r
+ ToolBarTheme tt = {TRUE, RGB(255, 230, 190), RGB(255, 190, 100), RGB(255, 140, 40), RGB(255, 180, 80), RGB(128, 128, 255)};\r
+ TB.SetToolBarTheme(tt);\r
+ Arrows.SetToolBarTheme(tt);\r
+ Cards.SetToolBarTheme(tt);\r
+\r
+ MenuTheme mt = {TRUE, RGB(255, 200, 190), RGB(255, 210, 90), RGB(255, 230, 190), RGB(230, 160, 190), RGB(128, 128, 128)};\r
+ MB.SetMenuBarTheme(mt);\r
+ SetMenuTheme(mt);\r
+ }\r
+ break;\r
+ case IDM_GOLD:\r
+ {\r
+ SetReBarTheme( RGB(230, 180, 0), RGB(240, 210, 90), RGB(255, 240, 150), RGB(180, 140, 50) );\r
+\r
+ ToolBarTheme tt = {TRUE, RGB(192, 210, 238), RGB(192, 210, 238), RGB(152, 181, 226), RGB(152, 181, 226), RGB(49, 106, 197)};\r
+ TB.SetToolBarTheme(tt);\r
+ Arrows.SetToolBarTheme(tt);\r
+ Cards.SetToolBarTheme(tt);\r
+\r
+ MenuTheme mt = {TRUE, RGB(196, 215, 250), RGB( 120, 180, 220), RGB(240, 210, 90), RGB(255, 240, 150), RGB(128, 128, 128)};\r
+ MB.SetMenuBarTheme(mt);\r
+ SetMenuTheme(mt);\r
+ }\r
+ break;\r
+ case IDM_OCHRE:\r
+ {\r
+ SetReBarTheme( RGB(248, 132, 12), RGB(248, 198, 10), RGB(248, 210, 20), RGB(248, 141, 6) );\r
+\r
+ ToolBarTheme tt = {TRUE, RGB(192, 210, 238), RGB(192, 210, 238), RGB(152, 181, 226), RGB(152, 181, 226), RGB(49, 106, 197)};\r
+ TB.SetToolBarTheme(tt);\r
+ Arrows.SetToolBarTheme(tt);\r
+ Cards.SetToolBarTheme(tt);\r
+\r
+ MenuTheme mt = {TRUE, RGB(196, 215, 250), RGB( 120, 180, 220), RGB(150,190,245), RGB(220,230,250), RGB(128, 128, 128)};\r
+ MB.SetMenuBarTheme(mt);\r
+ SetMenuTheme(mt);\r
+ }\r
+ break;\r
+ case IDM_PINK:\r
+ {\r
+ SetReBarTheme( RGB(255, 130, 190), RGB(250, 205, 235), RGB(250, 205, 235), RGB(255, 120, 170) );\r
+\r
+ ToolBarTheme tt = {TRUE, RGB(192, 210, 238), RGB(192, 210, 238), RGB(248, 147, 220), RGB(248, 153, 179), RGB(49, 106, 197)};\r
+ TB.SetToolBarTheme(tt);\r
+ Arrows.SetToolBarTheme(tt);\r
+ Cards.SetToolBarTheme(tt);\r
+\r
+ MenuTheme mt = {TRUE, RGB(196, 215, 250), RGB( 120, 180, 220), RGB(255, 130, 190), RGB(250, 205, 235), RGB(128, 128, 128)};\r
+ MB.SetMenuBarTheme(mt);\r
+ SetMenuTheme(mt);\r
+ }\r
+ break;\r
+ case IDM_MAUVE:\r
+ {\r
+ SetReBarTheme( RGB(210, 128, 155), RGB(230, 160, 190), RGB(230, 158, 188), RGB(110, 100, 125) );\r
+\r
+ ToolBarTheme tt = {TRUE, RGB(192, 210, 238), RGB(192, 210, 238), RGB(152, 181, 226), RGB(152, 181, 226), RGB(49, 106, 197)};\r
+ TB.SetToolBarTheme(tt);\r
+ Arrows.SetToolBarTheme(tt);\r
+ Cards.SetToolBarTheme(tt);\r
+\r
+ MenuTheme mt = {TRUE, RGB(196, 215, 250), RGB( 120, 180, 220), RGB(150,190,245), RGB(220,230,250), RGB(128, 128, 128)};\r
+ MB.SetMenuBarTheme(mt);\r
+ SetMenuTheme(mt);\r
+ }\r
+ break;\r
+ case IDM_BLACK:\r
+ {\r
+ SetReBarTheme( RGB(128, 138 ,176), RGB(98, 108 ,136), RGB(77, 87, 97), RGB(7, 17, 27) );\r
+\r
+ ToolBarTheme tt = {TRUE, RGB(49, 106, 197), RGB(64,177,230), RGB(27,65, 160), RGB(64,177,230), RGB(49, 106, 197)};\r
+ TB.SetToolBarTheme(tt);\r
+ Arrows.SetToolBarTheme(tt);\r
+ Cards.SetToolBarTheme(tt);\r
+\r
+ MenuTheme mt = {TRUE, RGB(84,197,240), RGB(89, 136, 217), RGB(59, 126, 197), RGB(94,187,230), RGB(128, 128, 128)};\r
+ MB.SetMenuBarTheme(mt);\r
+ SetMenuTheme(mt);\r
+ }\r
+ }\r
+\r
+ // Check the appropriate menu item\r
+ int nFileItem = GetMenuItemPos(GetFrameMenu(), _T("Theme"));\r
+ if (nFileItem >= 0)\r
+ {\r
+ CMenu* pThemeMenu = GetFrameMenu().GetSubMenu(nFileItem);\r
+ pThemeMenu->CheckMenuRadioItem(IDM_BLUE, IDM_MODERN, nColor, 0);\r
+ }\r
+\r
+ GetFrameMenu().CheckMenuItem(IDM_USE_THEMES, m_bUseThemes? MF_CHECKED : MF_UNCHECKED);\r
+ GetFrameMenu().CheckMenuItem(IDM_BAND_COLORS, m_bBandColors? MF_CHECKED : MF_UNCHECKED);\r
+ GetFrameMenu().CheckMenuItem(IDM_FLAT_STYLE, m_bFlatStyle? MF_CHECKED : MF_UNCHECKED);\r
+ GetFrameMenu().CheckMenuItem(IDM_LEFT_BANDS, m_bBandsLeft? MF_CHECKED : MF_UNCHECKED);\r
+ GetFrameMenu().CheckMenuItem(IDM_LOCK_MENUBAR, m_bLockMenuBand? MF_CHECKED : MF_UNCHECKED);\r
+ GetFrameMenu().CheckMenuItem(IDM_ROUND_BORDERS, m_bRoundBorders? MF_CHECKED : MF_UNCHECKED);\r
+ GetFrameMenu().CheckMenuItem(IDM_SHORT_BANDS, m_bShortBands? MF_CHECKED : MF_UNCHECKED);\r
+ GetFrameMenu().CheckMenuItem(IDM_USE_LINES, m_bUseLines? MF_CHECKED : MF_UNCHECKED);\r
+ RecalcLayout();\r
+}\r
+\r
+DWORD CMainFrame::GetRegDwordFromOpenKey(HKEY hKey, LPCTSTR pName)\r
+{\r
+ DWORD dwType;\r
+ DWORD dwCount = sizeof(DWORD);\r
+ DWORD dwValue = 0;\r
+ if (ERROR_SUCCESS == RegQueryValueEx(hKey, pName, NULL, &dwType, (LPBYTE)&dwValue, &dwCount))\r
+ return dwValue;\r
+ else\r
+ return 0;\r
+}\r
+\r
+BOOL CMainFrame::LoadRegistrySettings(LPCTSTR szKeyName)\r
+{\r
+ CFrame::LoadRegistrySettings(szKeyName);\r
+\r
+ HKEY hKey;\r
+ CString strKey = _T("Software\\");\r
+ strKey += szKeyName;\r
+ strKey += (_T("\\Theme Settings"));\r
+\r
+ if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER, strKey, 0, KEY_READ, &hKey))\r
+ {\r
+ m_nColor = GetRegDwordFromOpenKey(hKey, _T("ColorStyle"));\r
+ m_bUseThemes = GetRegDwordFromOpenKey(hKey, _T("UseThemes")) & 1;\r
+ m_bBandColors = GetRegDwordFromOpenKey(hKey, _T("UseBandColors")) & 1;\r
+ m_bFlatStyle = GetRegDwordFromOpenKey(hKey, _T("UseFlatStyle")) & 1;\r
+ m_bBandsLeft = GetRegDwordFromOpenKey(hKey, _T("PutBandsLeft")) & 1;\r
+ m_bLockMenuBand = GetRegDwordFromOpenKey(hKey, _T("LockMenuBand")) & 1;\r
+ m_bRoundBorders = GetRegDwordFromOpenKey(hKey, _T("UseRoundBorders")) & 1;\r
+ m_bShortBands = GetRegDwordFromOpenKey(hKey, _T("UseShortBands")) & 1;\r
+ m_bUseLines = GetRegDwordFromOpenKey(hKey, _T("UseLines")) & 1;\r
+ m_bShowArrows = GetRegDwordFromOpenKey(hKey, _T("ShowArrows")) & 1;\r
+ m_bShowCards = GetRegDwordFromOpenKey(hKey, _T("ShowCards")) & 1;\r
+ int nBands = GetRegDwordFromOpenKey(hKey, _T("NumBands"));\r
+\r
+ // Retrieve the band styles and IDs\r
+ for (int i = 0; i < nBands; ++i)\r
+ {\r
+ TCHAR szSubKey[16];\r
+ wsprintf(szSubKey, _T("Band ID %d\0"), i+1);\r
+ UINT nID = GetRegDwordFromOpenKey(hKey, szSubKey);\r
+ m_vBandIDs.push_back(nID);\r
+\r
+ wsprintf(szSubKey, _T("Band Style %d\0"), i+1);\r
+ UINT nStyle = GetRegDwordFromOpenKey(hKey, szSubKey);\r
+ m_vBandStyles.push_back(nStyle);\r
+ }\r
+\r
+ RegCloseKey(hKey);\r
+ }\r
+ else\r
+ {\r
+ // Choose reasonable default values\r
+ m_nColor = IDM_OLIVE;\r
+ m_bUseThemes = TRUE;\r
+ m_bBandColors = TRUE;\r
+ m_bFlatStyle = FALSE;\r
+ m_bBandsLeft = TRUE;\r
+ m_bLockMenuBand = TRUE;\r
+ m_bRoundBorders = TRUE;\r
+ m_bShortBands = TRUE;\r
+ m_bUseLines = FALSE;;\r
+ m_bShowArrows = TRUE;\r
+ m_bShowCards = TRUE;\r
+ }\r
+\r
+ return TRUE;\r
+}\r
+\r
+BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam)\r
+{\r
+ // OnCommand responds to menu and and toolbar input\r
+\r
+ UNREFERENCED_PARAMETER(lParam);\r
+\r
+ switch(LOWORD(wParam))\r
+ {\r
+ case IDM_FILE_EXIT:\r
+ // End the application\r
+ ::PostMessage(m_hWnd, WM_CLOSE, 0, 0);\r
+ return TRUE;\r
+ case IDM_MODERN:\r
+ ChooseColor(IDM_MODERN);\r
+ return TRUE;\r
+ case IDM_BLUE:\r
+ ChooseColor(IDM_BLUE);\r
+ return TRUE;\r
+ case IDM_GREY:\r
+ ChooseColor(IDM_GREY);\r
+ return TRUE;\r
+ case IDM_OLIVE:\r
+ ChooseColor(IDM_OLIVE);\r
+ return TRUE;\r
+ case IDM_OCHRE:\r
+ ChooseColor(IDM_OCHRE);\r
+ return TRUE;\r
+ case IDM_MAUVE:\r
+ ChooseColor(IDM_MAUVE);\r
+ return TRUE;\r
+ case IDM_PINK:\r
+ ChooseColor(IDM_PINK);\r
+ return TRUE;\r
+ case IDM_GOLD:\r
+ ChooseColor(IDM_GOLD);\r
+ return TRUE;\r
+ case IDM_BLACK:\r
+ ChooseColor(IDM_BLACK);\r
+ return TRUE;\r
+ case IDM_USE_THEMES:\r
+ OnUseThemes();\r
+ return TRUE;\r
+ case IDM_BAND_COLORS:\r
+ OnBandColors();\r
+ return TRUE;\r
+ case IDM_FLAT_STYLE:\r
+ OnFlatStyle();\r
+ return TRUE;\r
+ case IDM_LEFT_BANDS:\r
+ OnLeftBands();\r
+ return TRUE;\r
+ case IDM_LOCK_MENUBAR:\r
+ OnLockMenuBar();\r
+ return TRUE;\r
+ case IDM_ROUND_BORDERS:\r
+ OnRoundBorders();\r
+ return TRUE;\r
+ case IDM_SHORT_BANDS:\r
+ OnShortBands();\r
+ return TRUE;\r
+ case IDM_USE_LINES:\r
+ OnUseLines();\r
+ return TRUE;\r
+ case IDM_VIEW_ARROWS:\r
+ OnViewArrows();\r
+ break;\r
+ case IDM_VIEW_CARDS:\r
+ OnViewCards();\r
+ break;\r
+ case IDW_VIEW_STATUSBAR:\r
+ OnViewStatusBar();\r
+ return TRUE;\r
+ case IDW_VIEW_TOOLBAR:\r
+ OnViewToolBar();\r
+ return TRUE;\r
+ case IDM_HELP_ABOUT:\r
+ // Display the help dialog\r
+ OnHelp();\r
+ return TRUE;\r
+ }\r
+\r
+ return FALSE;\r
+}\r
+\r
+void CMainFrame::OnCreate()\r
+{\r
+ // OnCreate controls the way the frame is created.\r
+ // Overriding CFrame::Oncreate is optional.\r
+ // The default for the following variables is TRUE\r
+\r
+ // m_bShowIndicatorStatus = FALSE; // Don't show statusbar indicators\r
+ // m_bShowMenuStatus = FALSE; // Don't show toolbar or menu status\r
+ // m_bUseReBar = FALSE; // Don't use rebars\r
+ // m_bUseThemes = FALSE; // Don't use themes\r
+ // m_bUseToolBar = FALSE; // Don't use a toolbar\r
+ // m_bUseCustomDraw = FALSE; // Don't use custom draw for menu items\r
+\r
+ // call the base class function\r
+ CFrame::OnCreate();\r
+\r
+ if (IsReBarSupported())\r
+ {\r
+ //Set our theme colors\r
+ ChooseColor(m_nColor);\r
+ \r
+ // Set the band styles and positions\r
+ for (int i = 0; i < GetReBar().GetBandCount(); ++i)\r
+ {\r
+ if (i < (int)m_vBandStyles.size())\r
+ {\r
+ // Move the band to the correct position\r
+ int iFrom = GetReBar().IDToIndex(m_vBandIDs[i]);\r
+ GetReBar().MoveBand(iFrom, i);\r
+\r
+ // Set the band's style\r
+ REBARBANDINFO rbbi = {0};\r
+ rbbi.fMask = RBBIM_STYLE;\r
+ rbbi.fStyle = m_vBandStyles[i];\r
+ GetReBar().SetBandInfo(i, rbbi);\r
+ }\r
+ }\r
+\r
+ ShowArrows(m_bShowArrows);\r
+ ShowCards(m_bShowCards);\r
+ }\r
+ else\r
+ MessageBox(_T("Some Theme features are not supported on this Operating System"), _T("Warning"), MB_ICONWARNING);\r
+}\r
+\r
+void CMainFrame::OnInitialUpdate()\r
+{\r
+ // The frame is now created.\r
+ // Place any additional startup code here.\r
+\r
+ TRACE(_T("Frame created\n"));\r
+}\r
+\r
+LRESULT CMainFrame::OnNotify(WPARAM wParam, LPARAM lParam)\r
+{\r
+ // Process notification messages sent by child windows\r
+// switch(((LPNMHDR)lParam)->code)\r
+// {\r
+ //Add case statments for each notification message here\r
+// }\r
+\r
+ // Pass any unhandled messages on for default processing\r
+ return CFrame::OnNotify(wParam, lParam);\r
+}\r
+\r
+void CMainFrame::OnUseThemes()\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ m_bUseThemes = !m_bUseThemes;\r
+ BOOL bCheck = m_bUseThemes;\r
+ GetFrameMenu().CheckMenuItem(IDM_USE_THEMES, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
+ ReBarTheme rt = GetReBar().GetReBarTheme();\r
+ rt.UseThemes = m_bUseThemes;\r
+ GetReBar().SetReBarTheme(rt);\r
+ int nBand = GetReBar().GetBand(GetMenuBar());\r
+ GetReBar().ShowGripper(nBand, !m_bUseThemes);\r
+\r
+ GetReBar().RedrawWindow(0, 0, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ALLCHILDREN);\r
+ RecalcLayout();\r
+ }\r
+}\r
+\r
+void CMainFrame::OnBandColors()\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ m_bBandColors = !m_bBandColors;\r
+ BOOL bCheck = m_bBandColors;\r
+ GetFrameMenu().CheckMenuItem(IDM_BAND_COLORS, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
+ ChooseColor(m_nColor);\r
+\r
+ GetReBar().RedrawWindow(0, 0, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ALLCHILDREN);\r
+ RecalcLayout();\r
+ }\r
+}\r
+void CMainFrame::OnFlatStyle()\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ m_bFlatStyle = !m_bFlatStyle;\r
+ BOOL bCheck = m_bFlatStyle;\r
+ GetFrameMenu().CheckMenuItem(IDM_FLAT_STYLE, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
+ ReBarTheme rt = GetReBar().GetReBarTheme();\r
+ rt.FlatStyle = m_bFlatStyle;\r
+ GetReBar().SetReBarTheme(rt);\r
+\r
+ GetReBar().RedrawWindow(0, 0, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ALLCHILDREN);\r
+ RecalcLayout();\r
+ }\r
+}\r
+void CMainFrame::OnLeftBands()\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ m_bBandsLeft = !m_bBandsLeft;\r
+ BOOL bCheck = m_bBandsLeft;\r
+ GetFrameMenu().CheckMenuItem(IDM_LEFT_BANDS, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
+ ReBarTheme rt = GetReBar().GetReBarTheme();\r
+ rt.BandsLeft = m_bBandsLeft;\r
+ GetReBar().SetReBarTheme(rt);\r
+\r
+ GetReBar().RedrawWindow(0, 0, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ALLCHILDREN);\r
+ RecalcLayout();\r
+ }\r
+}\r
+void CMainFrame::OnLockMenuBar()\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ m_bLockMenuBand = !m_bLockMenuBand;\r
+ BOOL bCheck = m_bLockMenuBand;\r
+ GetFrameMenu().CheckMenuItem(IDM_LOCK_MENUBAR, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
+ ReBarTheme rt = GetReBar().GetReBarTheme();\r
+ rt.LockMenuBand = m_bLockMenuBand;\r
+ GetReBar().SetReBarTheme(rt);\r
+ GetReBar().MoveBand(GetReBar().GetBand(GetMenuBar()), 0); // Move the MenuBar to band 0\r
+\r
+ GetReBar().RedrawWindow(0, 0, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ALLCHILDREN);\r
+ RecalcLayout();\r
+ }\r
+}\r
+void CMainFrame::OnRoundBorders()\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ m_bRoundBorders = !m_bRoundBorders;\r
+ BOOL bCheck = m_bRoundBorders;\r
+ GetFrameMenu().CheckMenuItem(IDM_ROUND_BORDERS, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
+ ReBarTheme rt = GetReBar().GetReBarTheme();\r
+ rt.RoundBorders = m_bRoundBorders;\r
+ GetReBar().SetReBarTheme(rt);\r
+\r
+ GetReBar().RedrawWindow(0, 0, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ALLCHILDREN);\r
+ RecalcLayout();\r
+ }\r
+}\r
+void CMainFrame::OnShortBands()\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ m_bShortBands = !m_bShortBands;\r
+ BOOL bCheck = m_bShortBands;\r
+ GetFrameMenu().CheckMenuItem(IDM_SHORT_BANDS, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
+ ReBarTheme rt = GetReBar().GetReBarTheme();\r
+ rt.ShortBands = m_bShortBands;\r
+ GetReBar().SetReBarTheme(rt);\r
+\r
+ GetReBar().RedrawWindow(0, 0, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ALLCHILDREN);\r
+ RecalcLayout();\r
+ }\r
+}\r
+void CMainFrame::OnUseLines()\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ m_bUseLines = !m_bUseLines;\r
+ BOOL bCheck = m_bUseLines;\r
+ GetFrameMenu().CheckMenuItem(IDM_USE_LINES, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
+ ReBarTheme rt = GetReBar().GetReBarTheme();\r
+ rt.UseLines = m_bUseLines;\r
+ GetReBar().SetReBarTheme(rt);\r
+\r
+ GetReBar().RedrawWindow(0, 0, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ALLCHILDREN);\r
+ RecalcLayout();\r
+ }\r
+}\r
+\r
+void CMainFrame::OnViewArrows()\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ m_bShowArrows = !m_bShowArrows;\r
+ ShowArrows(m_bShowArrows);\r
+ }\r
+}\r
+\r
+void CMainFrame::OnViewCards()\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ m_bShowCards = !m_bShowCards;\r
+ ShowCards(m_bShowCards);\r
+ }\r
+}\r
+\r
+BOOL CMainFrame::SaveRegistrySettings()\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ CFrame::SaveRegistrySettings();\r
+\r
+ HKEY hKey;\r
+ CString strKeyName = GetRegistryKeyName();\r
+ CString strKey = _T("Software\\");\r
+ strKey += strKeyName + (_T("\\Theme Settings"));\r
+ int nBands = GetReBar().GetBandCount();\r
+\r
+ RegCreateKeyEx(HKEY_CURRENT_USER, strKey, 0, NULL,\r
+ REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL);\r
+\r
+ // Save the theme settings\r
+ RegSetValueEx(hKey, _T("ColorStyle"), 0, REG_DWORD, (LPBYTE)&m_nColor, sizeof(DWORD));\r
+ RegSetValueEx(hKey, _T("UseThemes"), 0, REG_DWORD, (LPBYTE)&m_bUseThemes, sizeof(DWORD));\r
+ RegSetValueEx(hKey, _T("UseBandColors"), 0, REG_DWORD, (LPBYTE)&m_bBandColors, sizeof(DWORD));\r
+ RegSetValueEx(hKey, _T("UseFlatStyle"), 0, REG_DWORD, (LPBYTE)&m_bFlatStyle, sizeof(DWORD));\r
+ RegSetValueEx(hKey, _T("PutBandsLeft"), 0, REG_DWORD, (LPBYTE)&m_bBandsLeft, sizeof(DWORD));\r
+ RegSetValueEx(hKey, _T("LockMenuBand"), 0, REG_DWORD, (LPBYTE)&m_bLockMenuBand, sizeof(DWORD));\r
+ RegSetValueEx(hKey, _T("UseRoundBorders"), 0, REG_DWORD, (LPBYTE)&m_bRoundBorders, sizeof(DWORD));\r
+ RegSetValueEx(hKey, _T("UseShortBands"), 0, REG_DWORD, (LPBYTE)&m_bShortBands, sizeof(DWORD));\r
+ RegSetValueEx(hKey, _T("UseLines"), 0, REG_DWORD, (LPBYTE)&m_bUseLines, sizeof(DWORD));\r
+ RegSetValueEx(hKey, _T("ShowArrows"), 0, REG_DWORD, (LPBYTE)&m_bShowArrows, sizeof(DWORD));\r
+ RegSetValueEx(hKey, _T("ShowCards"), 0, REG_DWORD, (LPBYTE)&m_bShowCards, sizeof(DWORD));\r
+ RegSetValueEx(hKey, _T("NumBands"), 0, REG_DWORD, (LPBYTE)&nBands, sizeof(DWORD));\r
+\r
+ // Save the rebar band settings\r
+ REBARBANDINFO rbbi = {0};\r
+ rbbi.fMask = RBBIM_ID|RBBIM_STYLE;\r
+\r
+ for (int i = 0; i < nBands; i++)\r
+ {\r
+ GetReBar().GetBandInfo(i, rbbi);\r
+ UINT nID = rbbi.wID;\r
+ UINT nStyle = rbbi.fStyle;\r
+\r
+ TCHAR szSubKey[16];\r
+ wsprintf(szSubKey, _T("Band ID %d\0"), i+1);\r
+ RegSetValueEx(hKey, szSubKey, 0, REG_DWORD, (LPBYTE)&nID, sizeof(DWORD));\r
+ wsprintf(szSubKey, _T("Band Style %d\0"), i+1);\r
+ RegSetValueEx(hKey, szSubKey, 0, REG_DWORD, (LPBYTE)&nStyle, sizeof(DWORD));\r
+ }\r
+\r
+ RegCloseKey(hKey);\r
+ }\r
+\r
+ return TRUE;\r
+}\r
+\r
+void CMainFrame::SetReBarTheme(COLORREF clrBkGnd1, COLORREF clrBkGnd2, COLORREF clrBand1, COLORREF clrBand2)\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ ReBarTheme rt = {0};\r
+ rt.UseThemes = m_bUseThemes;\r
+ rt.clrBkgnd1 = clrBkGnd1;\r
+ rt.clrBkgnd2 = clrBkGnd2;\r
+ rt.clrBand1 = clrBand1;\r
+ rt.clrBand2 = clrBand2;\r
+ rt.FlatStyle = m_bFlatStyle;\r
+ rt.BandsLeft = m_bBandsLeft;\r
+ rt.LockMenuBand = m_bLockMenuBand;\r
+ rt.RoundBorders = m_bRoundBorders;\r
+ rt.ShortBands = m_bShortBands;\r
+ rt.UseLines = m_bUseLines;\r
+\r
+ if (!m_bBandColors)\r
+ {\r
+ rt.clrBand1 = 0;\r
+ rt.clrBand2 = 0;\r
+ }\r
+\r
+ GetReBar().SetReBarTheme(rt);\r
+ }\r
+}\r
+\r
+void CMainFrame::SetupToolBar()\r
+{\r
+ // Set the Resource IDs for the first toolbar buttons\r
+ AddToolBarButton( IDM_FILE_NEW );\r
+ AddToolBarButton( IDM_FILE_OPEN );\r
+ AddToolBarButton( 0 ); // Separator\r
+ AddToolBarButton( IDM_FILE_SAVE );\r
+ AddToolBarButton( 0 ); // Separator\r
+ AddToolBarButton( IDM_EDIT_CUT );\r
+ AddToolBarButton( IDM_EDIT_COPY );\r
+ AddToolBarButton( IDM_EDIT_PASTE );\r
+ AddToolBarButton( 0 ); // Separator\r
+ AddToolBarButton( IDM_FILE_PRINT );\r
+ AddToolBarButton( 0 ); // Separator\r
+ AddToolBarButton( IDM_HELP_ABOUT );\r
+\r
+ // Set the three image lists for the first toolbar\r
+ SetToolBarImages(RGB(255, 0, 255), IDB_TOOLBAR_NORM, IDB_TOOLBAR_HOT, IDB_TOOLBAR_DIS);\r
+\r
+ // Add the two other toolbars if we can use rebars (Need Win95 and IE 4 or better)\r
+ if (IsReBarSupported())\r
+ {\r
+ // Add the Arrows toolbar\r
+ AddToolBarBand(Arrows, 0, IDC_ARROWS);\r
+ Arrows.AddButton(IDM_ARROW_LEFT);\r
+ Arrows.AddButton(IDM_ARROW_RIGHT);\r
+ Arrows.SetImages(RGB(255,0,255), IDB_ARROWS, 0, 0);\r
+\r
+ // Add the Cards toolbar\r
+ AddToolBarBand(Cards, 0, IDC_CARDS);\r
+ Cards.AddButton(IDM_CARD_CLUB);\r
+ Cards.AddButton(IDM_CARD_DIAMOND);\r
+ Cards.AddButton(IDM_CARD_HEART);\r
+ Cards.AddButton(IDM_CARD_SPADE);\r
+ Cards.SetImages(RGB(255,0,255), IDB_CARDS, 0, 0);\r
+ }\r
+\r
+ AddCombo();\r
+}\r
+\r
+void CMainFrame::ShowArrows(BOOL bShow)\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ UINT uCheck = bShow? MF_CHECKED: MF_UNCHECKED;\r
+\r
+ GetFrameMenu().CheckMenuItem(IDM_VIEW_ARROWS, uCheck);\r
+ GetReBar().SendMessage(RB_SHOWBAND, GetReBar().GetBand(Arrows), bShow);\r
+\r
+ if (GetReBar().GetReBarTheme().UseThemes && GetReBar().GetReBarTheme().BandsLeft)\r
+ GetReBar().MoveBandsLeft();\r
+ }\r
+}\r
+\r
+void CMainFrame::ShowCards(BOOL bShow)\r
+{\r
+ if (IsReBarSupported())\r
+ {\r
+ UINT uCheck = bShow? MF_CHECKED: MF_UNCHECKED;\r
+\r
+ GetFrameMenu().CheckMenuItem(IDM_VIEW_CARDS, uCheck);\r
+ GetReBar().SendMessage(RB_SHOWBAND, GetReBar().GetBand(Cards), bShow);\r
+\r
+ if (GetReBar().GetReBarTheme().UseThemes && GetReBar().GetReBarTheme().BandsLeft)\r
+ GetReBar().MoveBandsLeft();\r
+ }\r
+}\r
+\r
+LRESULT CMainFrame::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)\r
+{\r
+// switch (uMsg)\r
+// {\r
+// Add case statements for each messages to be handled here\r
+// }\r
+\r
+// pass unhandled messages on for default processing\r
+ return WndProcDefault(uMsg, wParam, lParam);\r
+}\r
+\r
+\r