📄 mainfrm.cpp
字号:
}
return TRUE;
}
return 0;
}
void CMainFrame::SwitchToFoldersView()
{
if (m_pFoldersView == NULL)
return;
if (m_wndSplitter.GetPane(0, 1)->IsKindOf(RUNTIME_CLASS(CULExplorerView)))
return;
if (m_wndSplitter.GetPane(0, 1)->IsKindOf(RUNTIME_CLASS(CBlockInfoView)))
{
m_pBlocksInfoView = (CBlockInfoView*)m_wndSplitter.ReplaceView(
0, 1, (CView*)m_pFoldersView);
}
else
{
m_pSystemInfoView = (CSystemInfoView*)m_wndSplitter.ReplaceView(
0, 1, (CView*)m_pFoldersView);
}
}
void CMainFrame::SwitchToSystemInfoView()
{
if (m_wndSplitter.GetPane(0, 1)->IsKindOf(RUNTIME_CLASS(CSystemInfoView)))
return;
if (m_pSystemInfoView == NULL)
{
if (m_wndSplitter.GetPane(0, 1)->IsKindOf(RUNTIME_CLASS(CBlockInfoView)))
{
m_pBlocksInfoView = (CBlockInfoView*)m_wndSplitter.ReplaceView(
0, 1, RUNTIME_CLASS(CSystemInfoView));
}
else
{
m_pFoldersView = (CULExplorerView*)m_wndSplitter.ReplaceView(
0, 1, RUNTIME_CLASS(CSystemInfoView));
}
}
else
{
if (m_wndSplitter.GetPane(0, 1)->IsKindOf(RUNTIME_CLASS(CBlockInfoView)))
{
m_pBlocksInfoView = (CBlockInfoView*)m_wndSplitter.ReplaceView(
0, 1, (CView*)m_pSystemInfoView);
}
else
{
m_pFoldersView = (CULExplorerView*)m_wndSplitter.ReplaceView(
0, 1, (CView*)m_pSystemInfoView);
}
}
}
void CMainFrame::SwitchToBlockInfoView()
{
if (m_wndSplitter.GetPane(0, 1)->IsKindOf(RUNTIME_CLASS(CBlockInfoView)))
return;
if (m_pBlocksInfoView == NULL)
{
if (m_wndSplitter.GetPane(0, 1)->IsKindOf(RUNTIME_CLASS(CSystemInfoView)))
{
m_pSystemInfoView = (CSystemInfoView*)m_wndSplitter.ReplaceView(
0, 1, RUNTIME_CLASS(CBlockInfoView));
}
else
{
m_pFoldersView = (CULExplorerView*)m_wndSplitter.ReplaceView(
0, 1, RUNTIME_CLASS(CBlockInfoView));
}
m_paneBlocksInfo.SetBlockInfoView((CBlockInfoView*)m_wndSplitter.GetPane(0, 1));
}
else
{
if (m_wndSplitter.GetPane(0, 1)->IsKindOf(RUNTIME_CLASS(CSystemInfoView)))
{
m_pSystemInfoView = (CSystemInfoView*)m_wndSplitter.ReplaceView(
0, 1, (CView*)m_pBlocksInfoView);
}
else
{
m_pFoldersView = (CULExplorerView*)m_wndSplitter.ReplaceView(
0, 1, (CView*)m_pBlocksInfoView);
}
}
m_paneBlocksInfo.ShowBlockInfo();
}
/*
void CMainFrame::OnThemeClientpane()
{
m_bClientPane = !m_bClientPane;
m_wndShortcutBar.SetClientPaneVisible(m_bClientPane);
}
*/
//void CMainFrame::OnUpdateThemeClientpane(CCmdUI* pCmdUI)
//{
// pCmdUI->SetCheck(m_bClientPane);
//
//}
//void CMainFrame::OnCustomize()
//{
// // get a pointer to the command bars object.
// CXTPCommandBars* pCommandBars = GetCommandBars();
// if (pCommandBars == NULL)
// return;
//
// // instanciate the customize dialog
// CXTPCustomizeSheet dlg(pCommandBars);
//
// // add the options page to the customize dialog.
// CXTPCustomizeOptionsPage pageOptions(&dlg);
// dlg.AddPage(&pageOptions);
//
// // add the commands page to the customize dialog.
// CXTPCustomizeCommandsPage* pPageCommands = dlg.GetCommandsPage();
// pPageCommands->AddCategories(IDR_MAINFRAME);
//
// // initialize the commands page page.
// pPageCommands->InsertAllCommandsCategory();
// pPageCommands->InsertBuiltInMenus(IDR_MAINFRAME);
// pPageCommands->InsertNewMenuCategory();
//
// // display the customize dialog.
// dlg.DoModal();
//}
// 控件初始化(初始化地址栏啦)
int CMainFrame::OnCreateControl(LPCREATECONTROLSTRUCT lpCreateControl)
{
// 地址栏
if (lpCreateControl->nID == ID_GOTO_URL)
{
CXTPControlComboBox* pControlAddress = (CXTPControlComboBox*)CXTPControlComboBox::CreateObject();
pControlAddress->SetDropDownListStyle();
pControlAddress->SetWidth(600);
pControlAddress->SetCaption(_T("地址栏"));
pControlAddress->SetStyle(xtpComboLabel);
pControlAddress->SetFlags(xtpFlagManualUpdate);
lpCreateControl->pControl = pControlAddress;
m_bAddressBarLoaded = TRUE;
return TRUE;
}
// 转到
if (lpCreateControl->nID == ID_GOTO_BTN)
{
CXTPControlButton* pControlButton = (CXTPControlButton*)CXTPControlButton::CreateObject();
pControlButton->SetID(lpCreateControl->nID);
pControlButton->SetStyle(xtpButtonIconAndCaption);
pControlButton->SetFlags(xtpFlagManualUpdate);
lpCreateControl->pControl = pControlButton;
return TRUE;
}
return FALSE;
}
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
if (m_bAddressBarLoaded)
{
CRect rcCtrl;
::GetWindowRect (m_hWnd, &rcCtrl);
CXTPControlComboBox* pControlAddress = (CXTPControlComboBox*)GetCommandBars()->FindControl(xtpControlComboBox, ID_GOTO_URL, FALSE, TRUE);
if (pControlAddress)
{
pControlAddress->SetWidth(rcCtrl.Width()-74);
}
}
CXTPFrameWnd::OnSize(nType, cx, cy);
}
void CMainFrame::OnAddressBarEnter(NMHDR* pNMHDR, LRESULT* pResult)
{
if ( !theFileSys.IsVDiskLoaded() )
return;
NMXTPCONTROL* tagNMCONTROL = (NMXTPCONTROL*)pNMHDR;
CXTPControlComboBox* pControl = (CXTPControlComboBox*)tagNMCONTROL->pControl;
if (pControl->GetType() == xtpControlComboBox)
{
CString strNewPath = ((CXTPControlComboBox*)pControl)->GetEditText();
if (strNewPath.GetLength())
{
m_paneFolders.ExpandDentryTree(strNewPath);
}
*pResult = TRUE;
}
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
void CMainFrame::OnGotoBtn()
{
if ( !theFileSys.IsVDiskLoaded() )
return;
CXTPCommandBars* pCommandBars = GetCommandBars();
CXTPControlComboBox* pControl = (CXTPControlComboBox*)pCommandBars->FindControl(
xtpControlComboBox, ID_GOTO_URL, TRUE, NULL);
CString strNewPath = ((CXTPControlComboBox*)pControl)->GetEditText();
if (strNewPath.GetLength())
{
m_paneFolders.ExpandDentryTree(strNewPath);
}
}
void CMainFrame::OnLoadVDisk()
{
CFileDialog FileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "虚拟盘文件 (*.vhd)|*.vhd");
if (FileDlg.DoModal() == IDOK)
{
if ( theFileSys.IsVDiskLoaded() )
OnUnLoadVDisk();
CString strPath = FileDlg.GetPathName();
if (!theFileSys.LoadVDisk(strPath))
{
AfxMessageBox("虚拟盘加载错误!");
return;
}
m_paneFolders.ShowDentryTree();
m_paneFolders.ExpandDentryTree("/");
m_paneSystemInfo.ShowSystemInfo();
m_paneBlocksInfo.ShowBlockInfo();
}
}
void CMainFrame::OnUnLoadVDisk()
{
theFileSys.UnLoadDisk();
m_paneFolders.ClearAll();
m_paneSystemInfo.ClearAll();
m_paneBlocksInfo.ClearAll();
CXTPCommandBars* pCommandBars = GetCommandBars();
CXTPControlComboBox* pControl = (CXTPControlComboBox*)pCommandBars->FindControl(
xtpControlComboBox, ID_GOTO_URL, TRUE, NULL);
pControl->SetEditText("");
for (int i=pControl->GetCount()-1; i>=0; i--)
{
pControl->DeleteItem(i);
}
}
void CMainFrame::OnDentryUp()
{
if ( !theFileSys.IsVDiskLoaded() )
return;
m_paneFolders.SelectParentItem();
}
void CMainFrame::OnDelete()
{
if ( !theFileSys.IsVDiskLoaded() )
return;
m_pFoldersView->Delete();
}
void CMainFrame::OnSecurity()
{
theFileSys.Sync();
}
CString CMainFrame::GetCurPath()
{
return m_strCurPath;
}
int CMainFrame::SetCurPath(CString Path)
{
CXTPCommandBars* pCommandBars = GetCommandBars();
//CXTPControls* pContorls = (CXTPToolBar*)pCommandBars->GetControls();
//CXTPControlComboBox* pControl = pContorls->FindControl(ID_GOTO_URL);
CXTPControlComboBox* pControl = (CXTPControlComboBox*)pCommandBars->FindControl(xtpControlComboBox, ID_GOTO_URL, TRUE, NULL);
int idx = pControl->FindString(-1, Path);
if (idx==LB_ERR)
{
int Count = pControl->GetCount();
if (Count>20)
pControl->DeleteItem(1);
idx = pControl->AddString(Path);
}
pControl->SetCurSel(idx);
m_strCurPath = Path;
return 0;
}
void CMainFrame::OnCreateVdisk()
{
CCreatVDiskDlg Dlg;
Dlg.DoModal();
}
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
// 限制窗口大小
CRect rectWindow;
GetWindowRect(&rectWindow);
CRect rectClient;
GetClientRect(&rectClient);
// get offset of toolbars, scrollbars, etc.
int nWidthOffset = rectWindow.Width() - rectClient.Width();
int nHeightOffset = rectWindow.Height() - rectClient.Height();
lpMMI->ptMinTrackSize.x = 600 + nWidthOffset;
lpMMI->ptMinTrackSize.y = 500 + nHeightOffset;
//lpMMI->ptMaxTrackSize.x = MAXX + nWidthOffset;
//lpMMI->ptMaxTrackSize.y = MAXY + nHeightOffset;
CXTPFrameWnd::OnGetMinMaxInfo(lpMMI);
}
void CMainFrame::OnHelpChm()
{
CString strBuffer;
// CTempBuffer<TCHAR, MAX_PATH> strBuffer;
// strBuffer[0] = _T('\0');
DWORD length = GetCurrentDirectory(0, NULL);
GetCurrentDirectory(length, strBuffer.GetBuffer(length));
strBuffer.ReleaseBuffer();
CFile chmFile;
CFileException Ex;
if (!chmFile.Open(strBuffer+"\\ULFSHelp.chm", CFile::modeRead, &Ex))
{
Waring("帮助文档不存在");
return;
}
chmFile.Close();
ShellExecute(m_hWnd, "open", "ULFSHelp.chm", "", "", SW_SHOW );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -