// ResourceViewPane.cpp // // (c)1998-2025 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "GUI_VisualStudio.h" #include "ResourceViewPane.h" #ifdef _DEBUG # define new DEBUG_NEW #endif IMPLEMENT_DYNAMIC(CResourceViewPane, CWnd); BEGIN_MESSAGE_MAP(CResourceViewPane, CWnd) ON_WM_CREATE() ON_WM_SIZE() ON_WM_PAINT() ON_WM_SETFOCUS() ON_MESSAGE(WM_XTP_SETCONTROLTHEME, OnSetControlTheme) END_MESSAGE_MAP() CResourceViewPane::CResourceViewPane() { m_pPane = NULL; m_rcMargin = CRect(0, 0, 0, 0); } CResourceViewPane::~CResourceViewPane() { } int CResourceViewPane::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CWnd::OnCreate(lpCreateStruct) == -1) { TRACE(_T("ERROR: Unable to create resource view pane.\n")); return -1; } if (!m_wndResourceView.Create(_T("SYSTREEVIEW32"), NULL, WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS | TVS_SHOWSELALWAYS, CRect(0, 0, 0, 0), this, 0xFF)) { TRACE(_T("ERROR: Unable to create tree control.\n")); return 0; } m_wndResourceView.ModifyStyleEx(0, WS_EX_STATICEDGE); // add the parent item HTREEITEM htItem = m_wndResourceView.InsertItem(_T("ToolkitProDemo resources"), 0, 1); m_wndResourceView.SetItemState(htItem, TVIS_BOLD, TVIS_BOLD); HTREEITEM hti = m_wndResourceView.InsertItem(_T("Accelerator"), 0, 1, htItem); m_wndResourceView.InsertItem(_T("IDR_MAINFRAME"), 2, 2, hti); m_wndResourceView.Expand(hti, TVE_EXPAND); hti = m_wndResourceView.InsertItem(_T("Dialog"), 0, 1, htItem); m_wndResourceView.InsertItem(_T("IDD_ABOUTBOX"), 3, 3, hti); hti = m_wndResourceView.InsertItem(_T("Icon"), 0, 1, htItem); m_wndResourceView.InsertItem(_T("IDR_MAINFRAME"), 4, 4, hti); m_wndResourceView.InsertItem(_T("IDR_APPTYPE"), 4, 4, hti); hti = m_wndResourceView.InsertItem(_T("Menu"), 0, 1, htItem); m_wndResourceView.InsertItem(_T("IDR_MAINFRAME"), 5, 5, hti); m_wndResourceView.InsertItem(_T("IDR_APPTYPE"), 5, 5, hti); hti = m_wndResourceView.InsertItem(_T("String Table"), 0, 1, htItem); m_wndResourceView.InsertItem(_T("String Table"), 6, 6, hti); hti = m_wndResourceView.InsertItem(_T("Toolbar"), 0, 1, htItem); m_wndResourceView.InsertItem(_T("IDR_MAINFRAME"), 7, 7, hti); hti = m_wndResourceView.InsertItem(_T("Version"), 0, 1, htItem); m_wndResourceView.InsertItem(_T("VS_VERSION_INFO"), 8, 8, hti); m_wndResourceView.Expand(htItem, TVE_EXPAND); return 0; } LRESULT CResourceViewPane::OnSetControlTheme(WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); XTPControlTheme nTheme = (XTPControlTheme)wParam; BOOL bVS2015Plus = ((nTheme == xtpControlThemeVisualStudio2015) || (nTheme == xtpControlThemeVisualStudio2017) || (nTheme == xtpControlThemeVisualStudio2019) || (nTheme == xtpControlThemeVisualStudio2022)); if (bVS2015Plus) m_rcMargin = CRect(XTP_DPI_X(1), 0, XTP_DPI_X(1), XTP_DPI_Y(1)); else m_rcMargin = CRect(0, 0, 0, 0); m_wndResourceView.SetTheme(nTheme); BOOL bVS2010Plus = ((nTheme == xtpControlThemeVisualStudio2010) || (nTheme == xtpControlThemeVisualStudio2012Dark) || (nTheme == xtpControlThemeVisualStudio2012Light) || (nTheme == xtpControlThemeVisualStudio2015) || (nTheme == xtpControlThemeVisualStudio2017) || (nTheme == xtpControlThemeVisualStudio2019) || (nTheme == xtpControlThemeVisualStudio2022)); if (bVS2010Plus) { m_wndResourceView.ModifyStyle(TVS_HASLINES, 0); } else { m_wndResourceView.ModifyStyle(0, TVS_HASLINES); } m_wndResourceView.SetExplorerTheme(bVS2010Plus); LoadRasterIcons(); LoadVectorIcons(); return 0; } void CResourceViewPane::OnSize(UINT nType, int cx, int cy) { CWnd::OnSize(nType, cx, cy); int x = m_rcMargin.left; int y = m_rcMargin.top; cx -= (x + m_rcMargin.right); cy -= (y + m_rcMargin.bottom); if (::IsWindow(m_wndResourceView)) { XTPPaintTheme nTheme = theApp.GetAppTheme(); CString strThemeSettings = theApp.GetAppThemeSettings(); BOOL bAdjust = ((nTheme == xtpControlThemeVisualStudio2015) || (nTheme == xtpControlThemeVisualStudio2017) || (nTheme == xtpControlThemeVisualStudio2019) || (nTheme == xtpControlThemeVisualStudio2022)); m_wndResourceView.ModifyStyleEx(bAdjust ? WS_EX_STATICEDGE : 0, bAdjust ? 0 : WS_EX_STATICEDGE); m_wndResourceView.MoveWindow(x, y, cx, cy); m_wndResourceView.Invalidate(FALSE); } } void CResourceViewPane::OnPaint() { CPaintDC dc(this); if (!m_rcMargin.IsRectNull()) { CXTPClientRect rClient(this); theApp.GetPaneColorSet()->DrawBorders(&dc, rClient, m_pPane); } } void CResourceViewPane::OnSetFocus(CWnd* /*pOldWnd*/) { if (::IsWindow(m_wndResourceView)) { m_wndResourceView.SetFocus(); } } void CResourceViewPane::LoadRasterIcons() { // XTPPaintTheme nTheme = theApp.GetAppTheme(); CString strThemeSettings = theApp.GetAppThemeSettings(); UINT treeIcons = IDB_RESOURCE_TREE; if (0 < strThemeSettings.Find(_T("BLUE"))) { treeIcons = IDB_RESOURCE_TREE_LIGHT; } else if (0 < strThemeSettings.Find(_T("BLUEEXTRA"))) { treeIcons = IDB_RESOURCE_TREE_LIGHT; } else if (0 < strThemeSettings.Find(_T("DARK"))) { treeIcons = IDB_RESOURCE_TREE_DARK; } else if (0 < strThemeSettings.Find(_T("LIGHT"))) { treeIcons = IDB_RESOURCE_TREE_LIGHT; } m_ilResourceView.DeleteImageList(); if (!CreateImageList(m_ilResourceView, treeIcons)) { TRACE(_T("ERROR: Unable to create tree control.\n")); return; } m_wndResourceView.SetImageList(&m_ilResourceView, TVSIL_NORMAL); } void CResourceViewPane::LoadVectorIcons() { // }