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

📄 mainfrm.cpp

📁 磁盘容量扫描、但界面和程序结构非常不错
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	if (m_pwndSplitterView)
	{
		if (m_pwndSplitterView->m_hWnd)
			m_pwndSplitterView->DestroyWindow();
		delete m_pwndSplitterView;
		m_pwndSplitterView = NULL;
	}

	//m_pwndView->Reset();
	//m_pwndView2->Reset();

	if (m_nViewType == 0)
	{
		m_pwndView1 = new CDetailView();
		if (!m_pwndView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW|WS_CLIPCHILDREN,
			CRect(0, 0, 0, 0), &m_wndSplitterVer, m_wndSplitterVer.IdFromRowCol(0, 1), NULL))
		{
			TRACE0("Failed to create view window\n");

			return;
		}

		m_pwndView->m_bVerMode = TRUE;
		//m_pwndView2->m_bVerMode = TRUE;
	}

	if (m_nViewType == 1) // Horrisontal
	{
		m_pwndSplitterView = new CGfxSplitterWnd;

		if (m_pwndSplitterView->CreateStatic(&m_wndSplitterVer, 2, 1,
			WS_CHILD | WS_VISIBLE, m_wndSplitterVer.IdFromRowCol(0, 1)))
		{
			m_pwndSplitterView->EnableUpBorder(FALSE);
			m_pwndSplitterView->bWhiteLine = FALSE;

			m_pwndView1 = new CDetailView();
			m_pwndView2 = new CDetailView();
			if (!m_pwndView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW|WS_CLIPCHILDREN,
				CRect(0, 0, 0, 0), m_pwndSplitterView, m_pwndSplitterView->IdFromRowCol(0, 0), NULL))
			{
				TRACE0("Failed to create view window\n");

				return;
			}

			if (!m_pwndView2->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW|WS_CLIPCHILDREN,
				CRect(0, 0, 0, 0), m_pwndSplitterView, m_pwndSplitterView->IdFromRowCol(1, 0), NULL))
			{
				TRACE0("Failed to create view window\n");

				return;
			}

			m_pwndView->m_bVerMode = TRUE;
			m_pwndView2->m_bVerMode = TRUE;

			m_wndSplitterVer.GetWindowRect(&rc);
			
			m_pwndSplitterView->SetRowInfo( 0, (rc.Height()-4)/2, 0 );
		}
	}

	if (m_nViewType == 2) // Verticle
	{
		m_pwndSplitterView = new CGfxSplitterWnd;
		if (m_pwndSplitterView->CreateStatic(&m_wndSplitterVer, 1, 2,
			WS_CHILD | WS_VISIBLE, m_wndSplitterVer.IdFromRowCol(0, 1)))
		{
			m_pwndSplitterView->EnableUpBorder(FALSE);
			m_pwndSplitterView->bWhiteLine = FALSE;

			m_pwndView1 = new CDetailView();
			m_pwndView2 = new CDetailView();

			if (!m_pwndView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
				CRect(0, 0, 0, 0), m_pwndSplitterView, m_pwndSplitterView->IdFromRowCol(0, 0), NULL))
			{
				TRACE0("Failed to create view window\n");

				return;
			}

			if (!m_pwndView2->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
				CRect(0, 0, 0, 0), m_pwndSplitterView, m_pwndSplitterView->IdFromRowCol(0, 1), NULL))
			{
				TRACE0("Failed to create view window\n");

				return;
			}

			m_pwndView->m_bVerMode = FALSE;
			m_pwndView2->m_bVerMode = FALSE;

			m_wndSplitterVer.GetWindowRect(&rc);

			m_pwndSplitterView->SetColumnInfo( 0, (rc.Width()- 4*2 - m_nBarWidth)/2, 0 );
		}
	}

	if (m_pwndSplitterView && m_pwndSplitterView->m_hWnd)
		m_pwndSplitterView->RecalcLayout();
	
	if (m_wndSplitterVer.m_hWnd)
		m_wndSplitterVer.RecalcLayout();	
}
*/
void CMainFrame::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
}

void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
{
	lpMMI->	ptMinTrackSize.x = 435;
	lpMMI->	ptMinTrackSize.y = 280;

	CFrameWnd::OnGetMinMaxInfo(lpMMI);
}

void CMainFrame::OnOptionChanged()
{
	m_wndBar.SetCurSel(-1);
	UpdateShortCutBar();
	UpdateBarStatus(0,0);
}

void CMainFrame::UpdateShortCutBar()
{
	CWinApp* app = AfxGetApp();
	BOOL bRemovable= app->GetProfileInt("Settings", "EnableRemovable", 1);
	BOOL bFixed = app->GetProfileInt("Settings", "EnableFixed", 1);
	BOOL bCDROM = app->GetProfileInt("Settings", "EnableCDROM", 1);
	BOOL bRemote = app->GetProfileInt("Settings", "EnableRemote", 0);
	BOOL bRamDrive = app->GetProfileInt("Settings", "EnableRAMDisk", 0);	
	CString strExclude = app->GetProfileString("Settings", "Exclude", "A:\\ B:\\");

	BOOL bEnableFolder = app->GetProfileInt("Settings", "EnableFolder",   1);
	
	// Load Folder data
	CStringArray strArray;
	CString str, strData;
	int n = 0;
	str.Format("FolderData%d", n);
	strData = app->GetProfileString("Settings", str, "");

	while (!strData.IsEmpty())
	{
		strArray.Add(strData);
		n++;
		str.Format("FolderData%d", n);
		strData = app->GetProfileString("Settings", str, "");
	}

	strExclude.MakeLower();
	str = strExclude;
	str.MakeUpper();
	strExclude += str;

	int nPos=0;
	CString strDrive = "?:\\";
	UINT nType;

	int nCount = m_wndBar.GetItemCount();
	for (int i=0; i<nCount; i++)
		m_wndBar.RemoveItem(0);
	m_listShortcut.RemoveAll();
	
	DWORD dwDriveList = ::GetLogicalDrives();
	while (dwDriveList)
	{
		if (dwDriveList & 1)
		{
			strDrive.SetAt(0, 0x41 + nPos);
			nType = ::GetDriveType((LPCTSTR)strDrive);
			
			switch (nType)
			{
			case DRIVE_REMOVABLE:
				if (bRemovable && strExclude.Find(strDrive.Left(1))==-1)
						AddDriveToBar(strDrive, 0);
		        break;
	
			case DRIVE_FIXED:
				if (bFixed && strExclude.Find(strDrive.Left(1))==-1 ) 
						AddDriveToBar(strDrive, 1);
				break;
		
			case DRIVE_REMOTE:
				if (bRemote && strExclude.Find(strDrive.Left(1))==-1 ) 
						AddDriveToBar(strDrive, 3);
				break;

			case DRIVE_CDROM:
				if (bCDROM && strExclude.Find(strDrive.Left(1))==-1 ) 
						AddDriveToBar(strDrive, 2);
				break;

			case DRIVE_RAMDISK:
				if (bRamDrive && strExclude.Find(strDrive.Left(1))==-1 ) 
						AddDriveToBar(strDrive, 5);
				break;
			}
				
		}
		dwDriveList >>= 1;
		nPos ++;
	}

	if (bEnableFolder)
	{
		int nSize = strArray.GetSize();
		CString strFolder;

		for (int i=0; i<nSize; i++)
			AddFolderToBar(strArray.GetAt(i));
	}
}

void CMainFrame::AddDriveToBar(CString str, int nImage)
{
	m_listShortcut.AddTail(str);

	CString strTitle = _T("");
	char driveName[32];
	char driveType[32];
	DWORD dwDword1, dwDword2, dwDword3;
	if (::GetVolumeInformation(
		str,
		driveName, 32, &dwDword1, &dwDword2, &dwDword3,
		driveType, 32))
	{
		strTitle = driveName;
		strTitle.MakeLower();
		strTitle = strTitle.Right(strTitle.GetLength()-1);
		strTitle = CString(driveName).Left(1) + strTitle;
	}else
	{
		if (nImage == 0)
			strTitle.LoadString(IDS_REMOVALE_DISK);
		else if (nImage == 2)
			strTitle.LoadString(IDS_CD_ROM);

	}
	strTitle += " (" + str.Left(str.GetLength()-1) + ")";

	int nItem = m_wndBar.GetItemCount();
	m_wndBar.InsertItem(0, nItem, strTitle, nImage, 0);
}

void CMainFrame::AddFolderToBar(CString str)
{
	if (str.Right(1) != "\\")
		str += "\\";

	m_listShortcut.AddTail(str);

	str = str.Left(str.GetLength()-1);

	int n= str.ReverseFind('\\');
	if (n!=-1)
		str = str.Right(str.GetLength() - n -1);

	int nItem = m_wndBar.GetItemCount();
	m_wndBar.InsertItem(0, nItem, str, 6, 0);
}

long CMainFrame::OnOutbarNotify(WPARAM wParam, LPARAM lParam)
{
	switch (wParam)
	{
		case NM_OB_ITEMCLICK:
		{
			int index = (int) lParam;

			POSITION pos = m_listShortcut.FindIndex(index);
			CString str = m_listShortcut.GetAt(pos);
			if (str.Right(1) != "\\")
				str += "\\";

			m_pwndView->SetTitle(str);
			m_pwndView->SetCurrentFolder(str);

			break;
		}
		return 0;
	}
	return 0;
}

void CMainFrame::DoSwitch(BOOL bShow)
{
	if (bShow)
	{
		m_pwndView->ShowMe();
	}else
		m_pwndView->OnStop();
		
}

void CMainFrame::SetCurrentFolder(CString &str)
{
	m_pwndView->m_strTitle = str;
}

void CMainFrame::UpdateBarStatus(WPARAM wParam, LPARAM lParam)
{
	CString str = m_pwndView->m_strTitle;

	POSITION pos = m_listShortcut.Find(str);

	if (!pos)
	{
		m_wndBar.SetCurSel(-1);
		return;
	}
	int n = 0;
	POSITION posHead = m_listShortcut.GetHeadPosition();
	while (pos != posHead)
	{
		m_listShortcut.GetPrev(pos);
		n++;
	}

	m_wndBar.SetCurSel(n);
}

void CMainFrame::EnableSwitchButton(BOOL b)
{
	m_wndSwitchButton.EnableWindow(b);
	//m_wndSwitchButton.ShowWindow(SW_HIDE);
	m_wndSwitchButton.ShowWindow((b)?SW_SHOW:SW_HIDE);
	PumpMessages();
}

void CMainFrame::OnWebSafeclean() 
{
	GotoURL(_T("http://www.ministars.com/safeclean/"));	
}

void CMainFrame::OnEMail() 
{
	//
}

void CMainFrame::OnHelpHelp() 
{
}

void CMainFrame::OnRegwizard() 
{
}

void CMainFrame::OnScanProgressNotify(WPARAM wParam, LPARAM lParam)
{
	WORD nLower, nHigher;
	UINT nPos;
	CString str;

	switch ((UINT)wParam)
	{
	case SCAN_PROGRESS_SET_RANGE:
		nLower = LOWORD(lParam);
		nHigher = HIWORD(lParam);

		m_wndStatusBar.SavePane(0);
		m_wndStatusBar.SetMode(0, XSB_PROGRESS);
		m_wndStatusBar.SetRange(0, nLower, nHigher);
		m_wndStatusBar.SetPos(0, 0);
		break;
	case SCAN_PROGRESS_SET_POS:
		nPos = m_wndStatusBar.GetPos(0);
		if (nPos != (UINT)lParam)
			m_wndStatusBar.SetPos(0, (UINT)lParam);
		break;
	case SCAN_PROGRESS_FINISHED:
		m_wndStatusBar.RestorePane(0);
		break;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -