Commit before breaking everything
[matches/honours.git] / research / transmission_spectroscopy / TOF / Win32++ / samples / Themes / src / Mainfrm.cpp
diff --git a/research/transmission_spectroscopy/TOF/Win32++/samples/Themes/src/Mainfrm.cpp b/research/transmission_spectroscopy/TOF/Win32++/samples/Themes/src/Mainfrm.cpp
new file mode 100644 (file)
index 0000000..794c85e
--- /dev/null
@@ -0,0 +1,725 @@
+////////////////////////////////////////////////////\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

UCC git Repository :: git.ucc.asn.au