📄 mainfrm.cpp
字号:
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 + -