📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "AliEditor.h"
#include "MainFrm.h"
#include "Navigator.h"
#include "RightPane.h"
#include "FileDlg.h"
#include "DlgDbTypeSelect.h"
#include "SerialPort.h"
#include "DownLoad.h"
#include "UploadDlg.h"
#include "AliEditorView.h"
#include "DlgDownLoadSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_UPDATE_COMMAND_UI(ID_ALI_CLOSE_FILE, OnUpdateAliCloseFile)
ON_COMMAND(ID_ALI_CLOSE_FILE, OnAliCloseFile)
ON_UPDATE_COMMAND_UI(ID_ALI_FILE_SAVE, OnUpdateAliFileSave)
ON_COMMAND(ID_ALI_FILE_SAVE, OnAliFileSave)
ON_UPDATE_COMMAND_UI(ID_ALI_FILE_SAVE_AS, OnUpdateAliFileSaveAs)
ON_COMMAND(ID_ALI_FILE_SAVE_AS, OnAliFileSaveAs)
ON_UPDATE_COMMAND_UI(IDC_DATA_DOWNLOAD, OnUpdateDataDownload)
ON_COMMAND(IDC_DATA_DOWNLOAD, OnDataDownload)
ON_UPDATE_COMMAND_UI(IDC_DATA_UPLOAD, OnUpdateDataUpload)
ON_COMMAND(IDC_DATA_UPLOAD, OnDataUpload)
ON_UPDATE_COMMAND_UI(IDC_OTHER_BIN_DOWNLOAD, OnUpdateOtherBinDownload)
ON_COMMAND(IDC_OTHER_BIN_DOWNLOAD, OnOtherBinDownload)
ON_COMMAND(IDC_SERIAL_PORT, OnSerialPort)
ON_COMMAND(IDC_DOWNLOAD_SETTING, OnDownloadSetting)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
HCURSOR g_hCSBusy;
HCURSOR g_hCSNormal;
bool g_bModifyed;
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
m_strFilePathName = _T("");
m_strFileExtName = _T("");
m_com_port = 0;
m_bits_rate = 115200;
m_data_parity = 0;
m_data_bits = 0;
m_stop_bits = 0;
m_bDownLoadDdb = TRUE;
m_bDownLoadUdb = FALSE;
g_bModifyed = false;
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
g_hCSNormal = ::LoadCursor(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_CURSOR_NORMAL));
g_hCSBusy = ::LoadCursor(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_CURSOR_BUSY));
CString strKeyValue;
CString strKeyName;
for(int i = 0; i < 32; i++)
{
strKeyName.Format("FavGroup%d", i);
strKeyValue = AfxGetApp()->GetProfileString(_T("Project Favor Group"), strKeyName, NULL);
if( strKeyValue.GetLength() == 0 )
{
strKeyValue.Format("Favor Group %d", i+1);
AfxGetApp()->WriteProfileString(_T("Project Favor Group"), strKeyName, strKeyValue);
}
}
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
BOOL bCreate = m_split.CreateStatic(this, 1, 2);
m_split.CreateView(0, 0, RUNTIME_CLASS(CNavigator), CSize(200, 30), pContext);
m_split.CreateView(0, 1, RUNTIME_CLASS(CRightPane), CSize(0, 0), pContext);
// SetActiveView((CAliEditorView *)GetEditorView());
return bCreate;
//return CFrameWnd::OnCreateClient(lpcs, pContext);
}
void CMainFrame::OnFileOpen()
{
// TODO: Add your command handler code here
CFileDlg fd(TRUE, NULL, "", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"Open Bin File(*.abs)|Default DataBase File(*.ddf)|SatCodex File(*.sdx)|Format Text File(*.txt)");
if(fd.DoModal() != IDOK) return;
if( !m_strFilePathName.IsEmpty() )
{
CloseFile();
// m_strFilePathName.Empty();
// GetNavigator()->DeleteAllItem();
// GetEditorView()->DeleteAllProg();
// m_dbParser.InitAllVariable();
}
::SetCursor(g_hCSBusy);
::SetClassLong(GetSafeHwnd(), GCL_HCURSOR, NULL);
CString fext = fd.GetFileExt();
m_strFileExtName = fext;
m_strFilePathName = fd.GetPathName();
if(!fext.CompareNoCase("abs"))
{
CDlgDbTypeSelect dlg;
dlg.DoModal();
if( dlg.m_bDbType == 0)
{
if( !m_dbParser.GenDdbFromBin(m_strFilePathName) )
{
m_strFilePathName.Empty();
::SetCursor(g_hCSNormal);
::SetClassLong(GetSafeHwnd(), GCL_HCURSOR, NULL);
return;
}
}
else
{
if( !m_dbParser.GenUdbFromBin(m_strFilePathName) )
{
m_strFilePathName.Empty();
::SetCursor(g_hCSNormal);
::SetClassLong(GetSafeHwnd(), GCL_HCURSOR, NULL);
return;
}
}
GetNavigator()->InitTreeNode();
}
else if(!fext.CompareNoCase("ddf"))
{
if ( !m_dbParser.GenDdbFromDdf(m_strFilePathName) )
{
m_strFilePathName.Empty();
::SetCursor(g_hCSNormal);
::SetClassLong(GetSafeHwnd(), GCL_HCURSOR, NULL);
return;
}
GetNavigator()->InitTreeNode();
}
else if(!fext.CompareNoCase("sdx"))
{
m_dbParser.GenDbFromSDX(m_strFilePathName);
}
else if(!fext.CompareNoCase("txt"))
{
if( !m_dbParser.GenDbFromTxt(m_strFilePathName) )
{
m_strFilePathName.Empty();
::SetCursor(g_hCSNormal);
::SetClassLong(GetSafeHwnd(), GCL_HCURSOR, NULL);
GetNavigator()->DeleteAllItem();
return;
}
}
else
{
//ASSERT(FALSE);
m_strFilePathName.Empty();
::SetCursor(g_hCSNormal);
::SetClassLong(GetSafeHwnd(), GCL_HCURSOR, NULL);
AfxMessageBox("not support open the file that you input.");
return;
}
SetWindowText("AliEditor - "+ m_strFilePathName);
::SetCursor(g_hCSNormal);
::SetClassLong(GetSafeHwnd(), GCL_HCURSOR, NULL);
g_bModifyed = false;
}
void CMainFrame::OnUpdateAliCloseFile(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if( m_strFilePathName.IsEmpty() )
pCmdUI->Enable(FALSE);
else
pCmdUI->Enable(TRUE);
}
void CMainFrame::CloseFile()
{
if( m_strFilePathName.IsEmpty() )
return;
chunk_item_list* pGroup = m_dbParser.m_pFavoriteGroup;
CString strKeyName;
if( pGroup && pGroup->pItems)
{
for(int i = 0; i < pGroup->nItemCount; i++)
{
strKeyName.Format("FavGroup%d", i);
AfxGetApp()->WriteProfileString(_T("Project Favor Group"), strKeyName, pGroup->pItems[i]);
}
}
m_strFilePathName.Empty();
GetNavigator()->DeleteAllItem();
GetEditorView()->DeleteAllProg();
m_dbParser.InitAllVariable();
SetWindowText("AliEditor");
}
void CMainFrame::OnAliCloseFile()
{
// TODO: Add your command handler code here
CloseFile();
}
void CMainFrame::OnUpdateAliFileSave(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if( m_strFilePathName.IsEmpty() )
{
pCmdUI->Enable(FALSE);
}
else if( !m_strFileExtName.CompareNoCase("abs")
|| !m_strFileExtName.CompareNoCase("ddf") )
{
pCmdUI->Enable(TRUE);
}
else
{
pCmdUI->Enable(FALSE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -