// MainFrm.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_Explorer.h" #include "MainFrm.h" #include "GUI_ExplorerTree.h" #include "GUI_ExplorerView.h" #include "HistoryView.h" #include "SearchView.h" #include "InternetView.h" #include "Filefilter.h" #ifdef _DEBUG # define new DEBUG_NEW # undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #ifndef AFX_ID_VIEW_MINIMUM # define AFX_ID_VIEW_MINIMUM ID_VIEW_SMALLICON #endif #ifndef AFX_ID_VIEW_MAXIMUM # define AFX_ID_VIEW_MAXIMUM ID_VIEW_BYNAME #endif LPCTSTR lpszProfileName = _T("CommandBars (v4.0)"); ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_COMMAND(ID_BACK, OnBack) ON_COMMAND(ID_FORWARD, OnForward) ON_COMMAND(ID_UP, OnUp) ON_COMMAND(ID_VIEW_SEARCH, OnSearch) ON_COMMAND(ID_VIEW_FOLDERS, OnFolders) ON_COMMAND(ID_VIEW_HISTORY, OnHistory) ON_COMMAND(ID_MOVETO, OnMoveto) ON_COMMAND(ID_COPYTO, OnCopyto) ON_COMMAND(ID_DELETE, OnDelete) ON_COMMAND(ID_UNDO, OnUndo) ON_COMMAND(ID_VIEWS, OnViews) ON_UPDATE_COMMAND_UI(ID_VIEW_FOLDERS, OnUpdateFolders) ON_UPDATE_COMMAND_UI(ID_VIEW_SEARCH, OnUpdateSearch) ON_UPDATE_COMMAND_UI(ID_VIEW_HISTORY, OnUpdateHistory) ON_COMMAND(ID_VIEW_XPMODE, OnViewXpmode) ON_UPDATE_COMMAND_UI(ID_VIEW_XPMODE, OnUpdateViewXpmode) ON_WM_CLOSE() ON_UPDATE_COMMAND_UI(ID_BACK, OnUpdateBack) ON_UPDATE_COMMAND_UI(ID_FORWARD, OnUpdateForward) ON_UPDATE_COMMAND_UI(ID_UP, OnUpdateUp) ON_UPDATE_COMMAND_UI(ID_MOVETO, OnUpdateMoveto) ON_UPDATE_COMMAND_UI(ID_COPYTO, OnUpdateCopyto) ON_UPDATE_COMMAND_UI(ID_DELETE, OnUpdateDelete) ON_UPDATE_COMMAND_UI(ID_UNDO, OnUpdateUndo) ON_COMMAND(ID_GO, OnGo) ON_COMMAND(ID_VIEW_SETFILTER, OnViewSetfilter) //}}AFX_MSG_MAP ON_UPDATE_COMMAND_UI_RANGE(AFX_ID_VIEW_MINIMUM, AFX_ID_VIEW_MAXIMUM, OnUpdateViewStyles) ON_COMMAND_RANGE(AFX_ID_VIEW_MINIMUM, AFX_ID_VIEW_MAXIMUM, OnViewStyle) ON_MESSAGE(WM_XTP_SHELL_NOTIFY, OnUpdateShell) ON_COMMAND(IDOK, OnAddressBarEnter) ON_CBN_SELENDOK(IDC_ADDRESSBAR, OnSelEndOkAddressBar) ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize) ON_XTP_CREATECONTROL() END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; ///////////////////////////////////////////////////////////////////////////// // CMainFrame construction/destruction CMainFrame::CMainFrame() { // TODO: add member initialization code here m_pSearchView = NULL; m_pHistoryView = NULL; m_pTreeView = NULL; m_pFolderView = NULL; m_pINetView = NULL; m_pListCtrl = NULL; m_pTreeCtrl = NULL; // Enable/Disable XP GUI Mode CXTPRegistryManager regMgr; m_bXPMode = regMgr.GetProfileInt(_T("Settings"), _T("bXPMode"), FALSE); } CMainFrame::~CMainFrame() { CXTPRegistryManager regMgr; regMgr.WriteProfileInt(_T("Settings"), _T("bXPMode"), m_bXPMode); } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } if (!InitCommandBars()) return -1; CXTPCommandBars* pCommandBars = GetCommandBars(); CXTPMenuBar* pMenuBar = pCommandBars->SetMenu(_T("Menu Bar"), IDR_MAINFRAME); CXTPToolBar* pStandardBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop); if (!pStandardBar || !pStandardBar->LoadToolBar(IDR_EXPLORER_BAR)) { TRACE0("Failed to create toolbar\n"); return -1; } CXTPToolBar* pGoBar = (CXTPToolBar*)pCommandBars->Add(_T("Go"), xtpBarTop); if (!pGoBar || !pGoBar->LoadToolBar(IDR_GO_BAR)) { TRACE0("Failed to create toolbar\n"); return -1; } pGoBar->SetButtonSize(CSize(25, 25)); InitializeAddressBar(); m_wndLogo.Create(NULL, WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_CENTERIMAGE, XTP_DPI(CRect(0, 0, 100, 23)), this); m_wndLogo.SetURL(_T("http://www.codejock.com")); VERIFY(m_bmpLogo.LoadBitmap(IDB_LOGO)); m_wndLogo.SetBitmap(m_bmpLogo); if (!m_wndReBar.Create(this) || !m_wndReBar.AddToolBar(pMenuBar) || !m_wndReBar.AddBar(&m_wndLogo, 0, 0, RBBS_NOGRIPPER | RBBS_FIXEDBMP | RBBS_FIXEDSIZE) || !m_wndReBar.AddToolBar(pStandardBar, RBBS_GRIPPERALWAYS | RBBS_BREAK) || !m_wndReBar.AddBar(&m_wndAddressBar, _T("Address"), NULL, RBBS_GRIPPERALWAYS | RBBS_BREAK) || !m_wndReBar.AddToolBar(pGoBar)) { TRACE0("Failed to create rebar\n"); return -1; // fail to create } // Set sizes for logo band. REBARBANDINFO rbbi; rbbi.cbSize = sizeof(rbbi); rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE | RBBIM_ID; rbbi.cx = rbbi.cxIdeal = rbbi.cxMinChild = XTP_DPI_X(100); rbbi.cyMinChild = XTP_DPI_Y(23); rbbi.wID = IDB_LOGO; m_wndReBar.SetBandInfo(1, &rbbi); CXTPImageManager* pImageManager = pCommandBars->GetImageManager(); pImageManager->SetIcons(IDR_GO_BAR, IDB_GO_BAR_HOT, xtpImageHot); m_bXPMode = m_bXPMode; OnViewXpmode(); if (pImageManager->IsAlphaIconsSupported()) { pImageManager->SetIcons(IDR_EXPLORER_BAR, IDR_TOOLBAR_SMALL_NORMAL); pImageManager->SetIcons(IDR_EXPLORER_BAR, IDR_TOOLBAR_SMALL_HOT, xtpImageHot); pImageManager->SetIcons(IDR_EXPLORER_BAR, IDR_TOOLBAR_LARGE_NORMAL); pImageManager->SetIcons(IDR_EXPLORER_BAR, IDR_TOOLBAR_LARGE_HOT, xtpImageHot); pCommandBars->GetCommandBarsOptions()->szLargeIcons = CSize(24, 24); pCommandBars->GetCommandBarsOptions()->bLargeIcons = TRUE; } pCommandBars->GetPaintManager()->m_bAutoResizeIcons = TRUE; pCommandBars->GetCommandBarsOptions()->ShowKeyboardCues(xtpKeyboardCuesShowWindowsDefault); LoadCommandBars(lpszProfileName); m_wndReBar.LoadState(lpszProfileName); return 0; } BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext) { // create splitter window if (!m_wndSplitter.CreateStatic(this, 1, 2)) return FALSE; if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CGUI_ExplorerTree), XTP_DPI(CSize(300, 100)), pContext)) { m_wndSplitter.DestroyWindow(); return FALSE; } if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CGUI_ExplorerView), XTP_DPI(CSize(100, 100)), pContext)) { m_wndSplitter.DestroyWindow(); return FALSE; } m_wndSplitter.ShowTopBorder(false, 3); m_wndSplitter.EnableDotTracker(TRUE); m_wndSplitter.SetTheme(new CAeroSplitterWndTheme); return TRUE; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if (!CFrameWnd::PreCreateWindow(cs)) return FALSE; cs.lpszClass = _T("XTPMainFrame"); CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass, CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME)); cs.style &= ~FWS_ADDTOTITLE; return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers void CMainFrame::OnUpdateViewStyles(CCmdUI* pCmdUI) { // TODO: customize or extend this code to handle choices on the // View menu. // if the right-hand pane hasn't been created or isn't a view, // disable commands in our range if (m_pListCtrl == NULL) pCmdUI->Enable(FALSE); else { DWORD dwStyle = m_pListCtrl->GetStyle() & LVS_TYPEMASK; // if the command is ID_VIEW_LINEUP, only enable command // when we're in LVS_ICON or LVS_SMALLICON mode if (pCmdUI->m_nID == ID_VIEW_LINEUP) { if (dwStyle == LVS_ICON || dwStyle == LVS_SMALLICON) pCmdUI->Enable(); else pCmdUI->Enable(FALSE); } else { // otherwise, use dots to reflect the style of the view pCmdUI->Enable(); BOOL bChecked = FALSE; switch (pCmdUI->m_nID) { case ID_VIEW_DETAILS: bChecked = (dwStyle == LVS_REPORT); break; case ID_VIEW_SMALLICON: bChecked = (dwStyle == LVS_SMALLICON); break; case ID_VIEW_LARGEICON: bChecked = (dwStyle == LVS_ICON); break; case ID_VIEW_LIST: bChecked = (dwStyle == LVS_LIST); break; default: bChecked = FALSE; break; } pCmdUI->SetRadio(bChecked ? 1 : 0); } } } void CMainFrame::OnViewStyle(UINT nCommandID) { // TODO: customize or extend this code to handle choices on the // View menu. // if the right-hand pane has been created and is a CGUI_ExplorerView, // process the menu commands... if (m_pListCtrl != NULL) { DWORD dwStyle = (DWORD)-1; switch (nCommandID) { case ID_VIEW_LINEUP: { // ask the list control to snap to grid m_pListCtrl->Arrange(LVA_SNAPTOGRID); } break; // other commands change the style on the list control case ID_VIEW_DETAILS: dwStyle = LVS_REPORT; break; case ID_VIEW_SMALLICON: dwStyle = LVS_SMALLICON; break; case ID_VIEW_LARGEICON: dwStyle = LVS_ICON; break; case ID_VIEW_LIST: dwStyle = LVS_LIST; break; } // change the style; window will repaint automatically if (dwStyle != -1) m_pListCtrl->ModifyStyle(LVS_TYPEMASK, dwStyle); } } void CMainFrame::OnBack() { // TODO: Add your command handler code here } void CMainFrame::OnUpdateBack(CCmdUI* pCmdUI) { // display disabled image list. pCmdUI->Enable(FALSE); } void CMainFrame::OnForward() { // TODO: Add your command handler code here } void CMainFrame::OnUpdateForward(CCmdUI* pCmdUI) { // display disabled image list. pCmdUI->Enable(FALSE); } void CMainFrame::OnUp() { // TODO: Add your command handler code here if (m_pTreeView) { m_pTreeView->SelectParentItem(); } } void CMainFrame::OnUpdateUp(CCmdUI* /*pCmdUI*/) { } void CMainFrame::OnSearch() { if (m_wndSplitter.GetColumnCount() == 1) { m_wndSplitter.ShowColumn(); if (m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CSearchView))) { return; } } if (!m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CSearchView))) { if (m_pSearchView == NULL) { if (m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CHistoryView))) { m_pHistoryView = (CHistoryView*) m_wndSplitter.ReplaceView(0, 0, RUNTIME_CLASS(CSearchView)); } else { m_pTreeView = (CGUI_ExplorerTree*) m_wndSplitter.ReplaceView(0, 0, RUNTIME_CLASS(CSearchView)); } } else { if (m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CHistoryView))) { m_pHistoryView = (CHistoryView*)m_wndSplitter.ReplaceView(0, 0, (CView*)m_pSearchView); } else { m_pTreeView = (CGUI_ExplorerTree*)m_wndSplitter.ReplaceView(0, 0, (CView*)m_pSearchView); } } } else { m_wndSplitter.HideColumn(0); } } void CMainFrame::OnFolders() { if (m_wndSplitter.GetColumnCount() == 1) { m_wndSplitter.ShowColumn(); if (m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CGUI_ExplorerTree))) { return; } } if (!m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CGUI_ExplorerTree))) { if (m_pTreeView == NULL) { if (m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CHistoryView))) { m_pHistoryView = (CHistoryView*)m_wndSplitter.ReplaceView(0, 0, RUNTIME_CLASS( CGUI_ExplorerTree)); } else { m_pSearchView = (CSearchView*)m_wndSplitter.ReplaceView(0, 0, RUNTIME_CLASS(CGUI_ExplorerTree)); } } else { if (m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CHistoryView))) { m_pHistoryView = (CHistoryView*)m_wndSplitter.ReplaceView(0, 0, (CView*)m_pTreeView); } else { m_pSearchView = (CSearchView*)m_wndSplitter.ReplaceView(0, 0, (CView*)m_pTreeView); } } } else { m_wndSplitter.HideColumn(0); } } void CMainFrame::OnHistory() { if (m_wndSplitter.GetColumnCount() == 1) { m_wndSplitter.ShowColumn(); if (m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CHistoryView))) { return; } } if (!m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CHistoryView))) { if (m_pHistoryView == NULL) { if (m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CGUI_ExplorerTree))) { m_pTreeView = (CGUI_ExplorerTree*) m_wndSplitter.ReplaceView(0, 0, RUNTIME_CLASS(CHistoryView)); } else { m_pSearchView = (CSearchView*) m_wndSplitter.ReplaceView(0, 0, RUNTIME_CLASS(CHistoryView)); } } else { if (m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CGUI_ExplorerTree))) { m_pTreeView = (CGUI_ExplorerTree*)m_wndSplitter.ReplaceView(0, 0, (CView*)m_pHistoryView); } else { m_pSearchView = (CSearchView*)m_wndSplitter.ReplaceView(0, 0, (CView*)m_pHistoryView); } } } else { m_wndSplitter.HideColumn(0); } } void CMainFrame::OnMoveto() { // TODO: Add your command handler code here } void CMainFrame::OnUpdateMoveto(CCmdUI* pCmdUI) { // display disabled image list. pCmdUI->Enable(FALSE); } void CMainFrame::OnCopyto() { // TODO: Add your command handler code here } void CMainFrame::OnUpdateCopyto(CCmdUI* pCmdUI) { // display disabled image list. pCmdUI->Enable(FALSE); } void CMainFrame::OnDelete() { // TODO: Add your command handler code here } void CMainFrame::OnUpdateDelete(CCmdUI* pCmdUI) { // display disabled image list. pCmdUI->Enable(FALSE); } void CMainFrame::OnUndo() { // TODO: Add your command handler code here } void CMainFrame::OnUpdateUndo(CCmdUI* pCmdUI) { // display disabled image list. pCmdUI->Enable(FALSE); } void CMainFrame::OnViews() { DWORD dwStyle = m_pListCtrl->GetStyle(); switch (dwStyle & (LVS_REPORT | LVS_SMALLICON | LVS_ICON | LVS_LIST)) { case LVS_ICON: OnViewStyle(ID_VIEW_SMALLICON); break; case LVS_SMALLICON: OnViewStyle(ID_VIEW_LIST); break; case LVS_LIST: OnViewStyle(ID_VIEW_DETAILS); break; case LVS_REPORT: OnViewStyle(ID_VIEW_LARGEICON); break; } } void CMainFrame::OnUpdateFolders(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CGUI_ExplorerTree))); } void CMainFrame::OnUpdateSearch(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CSearchView))); } void CMainFrame::OnUpdateHistory(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_wndSplitter.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CHistoryView))); } void CMainFrame::InitializeAddressBar() { // create a combo box for the address bar if (!m_wndAddressBar.Create(CBS_DROPDOWN | WS_CHILD, XTP_DPI(CRect(0, 0, 200, 400)), this, IDC_ADDRESSBAR)) { TRACE0("Failed to create combobox\n"); return; // fail to create } // set the font for the combo and initialize the toolbar. m_wndAddressBar.SetFont(&XTPAuxData().xtpFont); m_pTreeView = (CGUI_ExplorerTree*)m_wndSplitter.GetPane(0, 0); m_pFolderView = (CGUI_ExplorerView*)m_wndSplitter.GetPane(0, 1); m_pTreeCtrl = &m_pTreeView->GetTreeCtrl(); m_pListCtrl = &m_pFolderView->GetListCtrl(); m_pListCtrl->AssociateTree(m_pTreeCtrl); m_pTreeCtrl->AssociateList(m_pListCtrl); m_pTreeCtrl->AssociateCombo(&m_wndAddressBar); } LRESULT CMainFrame::OnUpdateShell(WPARAM wParam, LPARAM /*lParam*/) { switch (wParam) { case SHN_XTP_INETFOLDER: { int iCount = m_wndSplitter.GetColumnCount(); CWnd* pWnd = m_wndSplitter.GetPane(0, iCount - 1); if (pWnd && pWnd->IsKindOf(RUNTIME_CLASS(CInternetView))) break; if (m_pINetView == NULL) { m_pFolderView = (CGUI_ExplorerView*)m_wndSplitter.ReplaceView(0, iCount - 1, RUNTIME_CLASS( CInternetView)); } else { m_pFolderView = (CGUI_ExplorerView*)m_wndSplitter.ReplaceView(0, iCount - 1, (CView*)m_pINetView); } } break; default: { int iCount = m_wndSplitter.GetColumnCount(); CWnd* pWnd = m_wndSplitter.GetPane(0, iCount - 1); if (pWnd && pWnd->IsKindOf(RUNTIME_CLASS(CGUI_ExplorerView))) break; m_pINetView = (CInternetView*)m_wndSplitter.ReplaceView(0, 1, (CView*)m_pFolderView); } break; } return 0; } void CMainFrame::OnViewXpmode() { m_bXPMode = !m_bXPMode; CXTPCaptionButton& captBtn = m_pTreeView->m_wndCaption.GetCaptionButton(); if (m_bXPMode) { captBtn.SetTheme(xtpControlThemeOfficeXP); } else { captBtn.SetTheme(xtpControlThemeDefault); } if (m_bXPMode) CXTPPaintManager::SetCustomTheme(new CXTPReBarPaintManager); else CXTPPaintManager::SetCustomTheme(new CXTPReBarPaintManager); XTPPaintManager()->GetIconsInfo()->bUseDisabledIcons = TRUE; XTPPaintManager()->GetIconsInfo()->bUseFadedIcons = FALSE; XTPPaintManager()->GetIconsInfo()->bIconsWithShadow = FALSE; GetCommandBars()->GetPaintManager()->m_bAutoResizeIcons = TRUE; RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN); GetCommandBars()->RedrawCommandBars(); } void CMainFrame::OnUpdateViewXpmode(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bXPMode); } void CMainFrame::OnClose() { SaveCommandBars(lpszProfileName); m_wndReBar.SaveState(lpszProfileName); // save frame window size and position. m_wndPosition.SaveWindowPos(this); CFrameWnd::OnClose(); } BOOL CMainFrame::ShowWindowEx(int nCmdShow) { ASSERT_VALID(this); // restore saved rebar state. // m_wndReBar.LoadState(_T("Rebar State")); // restore frame window size and position. m_wndPosition.LoadWindowPos(this); nCmdShow = m_wndPosition.showCmd; return ShowWindow(SW_SHOW); } void CMainFrame::OnAddressBarEnter() { CString strNewPath; m_wndAddressBar.GetWindowText(strNewPath); if (strNewPath.GetLength()) { m_pTreeCtrl->TunnelTree(strNewPath); } } void CMainFrame::OnSelEndOkAddressBar() { if (m_pTreeCtrl != NULL) { HTREEITEM hItem = (HTREEITEM)m_wndAddressBar.GetItemData(m_wndAddressBar.GetCurSel()); if (hItem != NULL) { m_pTreeCtrl->SelectItem(hItem); } } } void CMainFrame::OnGo() { // TODO: Add your command handler code here OnAddressBarEnter(); } int CMainFrame::OnCreateControl(LPCREATECONTROLSTRUCT lpCreateControl) { if (lpCreateControl->nID == ID_VIEWS) { lpCreateControl->controlType = xtpControlSplitButtonPopup; return TRUE; } if (lpCreateControl->nID == ID_VIEWS) { lpCreateControl->controlType = xtpControlSplitButtonPopup; return TRUE; } switch (lpCreateControl->nID) { case ID_BACK: case ID_VIEW_SEARCH: case ID_VIEW_FOLDERS: case ID_VIEW_HISTORY: case ID_GO: lpCreateControl->buttonStyle = xtpButtonIconAndCaption; return TRUE; } return FALSE; } void CMainFrame::OnCustomize() { CXTPCustomizeSheet cs(GetCommandBars()); CXTPCustomizeOptionsPage pageOptions(&cs); cs.AddPage(&pageOptions); CXTPCustomizeCommandsPage* pCommands = cs.GetCommandsPage(); pCommands->AddCategories(IDR_MAINFRAME); pCommands->InsertAllCommandsCategory(); pCommands->InsertBuiltInMenus(IDR_MAINFRAME); pCommands->InsertNewMenuCategory(); cs.DoModal(); } void CMainFrame::SetFilter() { CFileFilter dlg; dlg.m_csFilter = m_csFilter; // In case one was set previously if (dlg.DoModal() == IDOK) { m_csFilter = dlg.m_csFilter; m_pFolderView->GetListCtrl().SetIncludeExtensions(m_csFilter); m_pFolderView->GetListCtrl().RefreshList(); } } void CMainFrame::OnViewSetfilter() { SetFilter(); }