📄 mainfrm.cpp
字号:
}
CString strControlBarRegEntry = REGISTRY_ROOT;
strControlBarRegEntry += CONTROL_BARS;
CDockState dockState;
dockState.LoadState (CONTROL_BARS);
for (int i = 0; i < dockState.m_arrBarInfo.GetSize (); i ++)
{
CControlBarInfo* pInfo = (CControlBarInfo*) dockState.m_arrBarInfo [i];
ASSERT (pInfo != NULL);
if (!pInfo->m_bFloating)
{
if (GetControlBar (pInfo->m_nBarID) == NULL)
{
TRACE (_T("ControlBar %x is not valid!\n"), pInfo->m_nBarID);
return 0;
}
}
}
SetDockState (dockState);
return 0;
}
void CMainFrame2::OnClose()
{
if (g_pProject && g_pProject->IsModified ())
{
CString sText;
sText.Format (IDS_PROJECT_NOT_SAVED, GetName (g_pProject->sPath));
int nResult = AfxMessageBox (sText, MB_YESNOCANCEL|MB_ICONQUESTION);
if (nResult == IDYES)
{
if (!theApp.SaveProject ())
return;
}
else if (nResult != IDNO)
return;
}
theApp.SaveLastDocs ();
if (m_bFullScreen)
FullScreenOff ();
WINDOWPLACEMENT status;
status.length = sizeof (WINDOWPLACEMENT);
GetWindowPlacement (&status);
CReg reg;
if (reg.Create (HKEY_CURRENT_USER, REG_EDITPAD_IDE, KEY_WRITE))
{
VERIFY (reg.SaveNumber (_T ("ShowFlags"), status.flags));
VERIFY (reg.SaveNumber (_T ("ShowCmd"), status.showCmd));
VERIFY (reg.SaveNumber (_T ("Left"), status.rcNormalPosition.left));
VERIFY (reg.SaveNumber (_T ("Top"), status.rcNormalPosition.top));
VERIFY (reg.SaveNumber (_T ("Right"), status.rcNormalPosition.right));
VERIFY (reg.SaveNumber (_T ("Bottom"), status.rcNormalPosition.bottom));
}
CString strControlBarRegEntry = REGISTRY_ROOT;
strControlBarRegEntry += CONTROL_BARS;
CDockState dockState;
GetDockState (dockState);
dockState.SaveState (CONTROL_BARS);
CMDIFrameWnd::OnClose();
}
void CMainFrame2::OnViewFullScreen()
{
if (m_bFullScreen)
FullScreenOff ();
else
FullScreenOn ();
}
void CMainFrame2::OnUpdateViewFullScreen(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck (m_bFullScreen);
}
void CMainFrame2::OnFileCloseAll()
{
if (theApp.SaveAllModified ())
theApp.CloseAllDocuments (FALSE);
}
void CMainFrame2::OnCloseWindow()
{
MDIGetActive ()->DestroyWindow ();
}
void CMainFrame2::OnUpdateCloseWindow(CCmdUI* pCmdUI)
{
pCmdUI->Enable (MDIGetActive () != NULL);
}
void CMainFrame2::OnNextWindow()
{
MDINext ();
}
void CMainFrame2::OnUpdateNextWindow(CCmdUI* pCmdUI)
{
pCmdUI->Enable (MDIGetCount () > 1);
}
void CMainFrame2::OnPrevWindow()
{
MDIPrev ();
}
void CMainFrame2::OnUpdatePrevWindow(CCmdUI* pCmdUI)
{
pCmdUI->Enable (MDIGetCount () > 1);
}
void CMainFrame2::OnExplorer()
{
m_wndWorkspaceBar.ToggleExplorer ();
}
void CMainFrame2::OnUpdateExplorer(CCmdUI* pCmdUI)
{
if (m_wndWorkspaceBar.IsVisible ())
{
pCmdUI->Enable (TRUE);
pCmdUI->SetCheck (m_wndWorkspaceBar.IsExplorer ());
}
else
pCmdUI->Enable (FALSE);
}
void CMainFrame2::OnProject()
{
m_wndWorkspaceBar.ToggleProject ();
}
void CMainFrame2::OnUpdateProject(CCmdUI* pCmdUI)
{
if (m_wndWorkspaceBar.IsVisible ())
{
pCmdUI->Enable (TRUE);
pCmdUI->SetCheck (m_wndWorkspaceBar.IsProject ());
}
else
pCmdUI->Enable (FALSE);
}
//Alarm flashing until the window became focus
void CMainFrame2::FlashUntilFocus ()
{
m_bGotFocus = FALSE;
BOOL bInvert = FALSE;
while (!m_bGotFocus)
{
FlashWindow (bInvert);
bInvert= !bInvert;
Sleep (500);
if (GetFocus() == this)
break;
}
FlashWindow(FALSE);
}
void CMainFrame2::OnSetFocus (CWnd* pOldWnd)
{
CMDIFrameWnd::OnSetFocus (pOldWnd);
m_bGotFocus = TRUE;
}
LONG CMainFrame2::
OnOpenHere (WPARAM wParam, LPARAM lParam)
{
if (FileExist((LPCTSTR) lParam))
{
theApp.OpenDocumentFile ((LPCTSTR) lParam);
}
return 0;
}
void CMainFrame2::OnProjectNew()
{
if (theApp.NewProject ())
m_wndWorkspaceBar.PopulateProject ();
}
void CMainFrame2::OnUpdateProjectNew(CCmdUI* pCmdUI)
{
pCmdUI->Enable (TRUE);
}
void CMainFrame2::OnProjectOpen()
{
if (g_pProject && g_pProject->IsModified ())
{
CString sText;
sText.Format (IDS_PROJECT_NOT_SAVED, GetName (g_pProject->sPath));
int nResult = AfxMessageBox (sText, MB_YESNOCANCEL|MB_ICONQUESTION);
if (nResult == IDYES)
{
if (!theApp.SaveProject ())
return;
}
else if (nResult != IDNO)
return;
}
if (theApp.OpenProject ())
m_wndWorkspaceBar.PopulateProject ();
}
void CMainFrame2::OnUpdateProjectOpen(CCmdUI* pCmdUI)
{
pCmdUI->Enable (TRUE);
}
void CMainFrame2::OnProjectReload()
{
if (g_pProject && g_pProject->IsModified ())
{
CString sText;
sText.Format (IDS_PROJECT_NOT_SAVED, GetName (g_pProject->sPath));
int nResult = AfxMessageBox (sText, MB_YESNOCANCEL|MB_ICONQUESTION);
if (nResult == IDYES)
{
if (!theApp.SaveProject ())
return;
}
else if (nResult != IDNO)
return;
}
if (g_pProject)
{
if (theApp.OpenProject (g_pProject->sPath))
m_wndWorkspaceBar.PopulateProject ();
}
}
void CMainFrame2::OnUpdateProjectReload(CCmdUI* pCmdUI)
{
pCmdUI->Enable (g_pProject != NULL);
}
void CMainFrame2::OnProjectClose()
{
if (g_pProject && g_pProject->IsModified ())
{
CString sText;
sText.Format (IDS_PROJECT_NOT_SAVED, GetName (g_pProject->sPath));
int nResult = AfxMessageBox (sText, MB_YESNOCANCEL|MB_ICONQUESTION);
if (nResult == IDYES)
{
if (!theApp.SaveProject ())
return;
}
else if (nResult != IDNO)
return;
}
if (g_pProject)
{
m_wndWorkspaceBar.EmptyProject ();
delete g_pProject;
g_pProject = NULL;
}
}
void CMainFrame2::OnUpdateProjectClose(CCmdUI* pCmdUI)
{
pCmdUI->Enable (g_pProject != NULL);
}
void CMainFrame2::OnProjectSave()
{
if (g_pProject)
theApp.SaveProject ();
}
void CMainFrame2::OnUpdateProjectSave(CCmdUI* pCmdUI)
{
if (g_pProject)
{
CString sExt = GetExt (g_pProject->sPath);
sExt.MakeLower ();
pCmdUI->Enable (g_pProject->sPath.IsEmpty () || sExt == _T ("edp"));
}
else
pCmdUI->Enable (FALSE);
}
void CMainFrame2::OnProjectSaveAs()
{
if (g_pProject)
theApp.SaveProjectAs ();
}
void CMainFrame2::OnUpdateProjectSaveAs(CCmdUI* pCmdUI)
{
pCmdUI->Enable (g_pProject != NULL);
}
void CMainFrame2::OnMruProject(UINT nID)
{
ASSERT_VALID (this);
ASSERT (!theApp.m_lstProjects.IsEmpty ());
ASSERT (nID >= ID_PROJECT_MRU_FILE1);
ASSERT (nID < (UINT) (ID_PROJECT_MRU_FILE1 + theApp.m_lstProjects.GetCount ()));
int nIndex = nID - ID_PROJECT_MRU_FILE1;
POSITION pos = theApp.m_lstProjects.FindIndex (nIndex);
ASSERT (pos);
CString sProject = theApp.m_lstProjects.GetAt (pos);
TRACE2 ("MRU: open project (%d) '%s'.\n", nIndex + 1, sProject);
if (g_pProject && g_pProject->IsModified ())
{
CString sText;
sText.Format (IDS_PROJECT_NOT_SAVED, GetName (g_pProject->sPath));
int nResult = AfxMessageBox (sText, MB_YESNOCANCEL|MB_ICONQUESTION);
if (nResult == IDYES)
{
if (!theApp.SaveProject ())
return;
}
else if (nResult != IDNO)
return;
}
if (theApp.OpenProject (sProject))
m_wndWorkspaceBar.PopulateProject ();
}
void CMainFrame2::OnUpdateMruProject(CCmdUI* pCmdUI)
{
CString sOriginal;
if (pCmdUI->m_pMenu != NULL)
pCmdUI->m_pMenu->GetMenuString (pCmdUI->m_nID, sOriginal, MF_BYCOMMAND);
if (theApp.m_lstProjects.IsEmpty ())
{
if (!sOriginal.IsEmpty ())
pCmdUI->SetText (sOriginal);
pCmdUI->Enable (FALSE);
return;
}
if (pCmdUI->m_pMenu == NULL)
return;
for (int iMRU = 0; iMRU < 16; iMRU++)
pCmdUI->m_pMenu->DeleteMenu (pCmdUI->m_nID + iMRU, MF_BYCOMMAND);
CString sProject;
TCHAR buf[5];
POSITION pos = theApp.m_lstProjects.GetHeadPosition ();
ASSERT (pos);
iMRU = 0;
do
{
sProject = theApp.m_lstProjects.GetNext (pos);
_stprintf (buf, _T("&%d "), (iMRU++ + 1) % 10);
pCmdUI->m_pMenu->InsertMenu (pCmdUI->m_nIndex++, MF_STRING|MF_BYPOSITION, pCmdUI->m_nID++, buf + sProject);
}
while (pos);
pCmdUI->m_nIndex--;
pCmdUI->m_nIndexMax = pCmdUI->m_pMenu->GetMenuItemCount();
pCmdUI->m_bEnableChanged = TRUE;
}
void CMainFrame2::OnEncoding(UINT nID)
{
ASSERT_VALID (this);
ASSERT (nID >= ID_ENCODING_1);
ASSERT (nID < (UINT) (ID_ENCODING_1 + nCodeNames + 1));
CCrystalTextBuffer::m_nDefaultEncoding = nID - ID_ENCODING_1 - 1;
}
void CMainFrame2::OnUpdateEncoding(CCmdUI* pCmdUI)
{
CMenu *pMenu = pCmdUI->m_pMenu ? pCmdUI->m_pMenu->GetSubMenu (0) : NULL;
if (!pMenu)
return;
for (int iEnc = 0; iEnc < 16; iEnc++)
pMenu->DeleteMenu (pCmdUI->m_nID + iEnc, MF_BYCOMMAND);
TCHAR buf[40];
LPCTSTR *pszCodeName = pszCodeNames;
iEnc = 0;
_stprintf (buf, _T("&%d %s"), iEnc++ % 10, _T ("No recoding"));
pMenu->InsertMenu (pCmdUI->m_nIndex++, MF_STRING|MF_BYPOSITION|((DWORD) CCrystalTextBuffer::m_nDefaultEncoding == pCmdUI->m_nID - ID_ENCODING_1 - 1 ? MF_CHECKED : 0), pCmdUI->m_nID, buf);
pCmdUI->m_nID++;
do
{
_stprintf (buf, _T("&%d %s"), iEnc++ % 10, *pszCodeName++);
pMenu->InsertMenu (pCmdUI->m_nIndex++, MF_STRING|MF_BYPOSITION|((DWORD) CCrystalTextBuffer::m_nDefaultEncoding == pCmdUI->m_nID - ID_ENCODING_1 - 1 ? MF_CHECKED : 0), pCmdUI->m_nID, buf);
pCmdUI->m_nID++;
}
while (*pszCodeName);
pCmdUI->m_nIndex--;
pCmdUI->m_nIndexMax = pMenu->GetMenuItemCount();
pCmdUI->m_bEnableChanged = TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -