⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp

📁 类似Linux操作系统0.11版文件系统的文件系统设计和Windows下的操作程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		}
		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 + -