📄 dsacd_ivrview.cpp
字号:
hItem = InsertItemFromFile(buf, nID, hItem);
}
else
{
for(int i=0; i<=nFlag; i++)
hItem = m_TreeCtrl->GetParentItem(hItem);
hItem = InsertItemFromFile(buf, nID, hItem);
}
}
bResult=m_IOFile.ReadString(buf);
}
m_IOFile.Close();
OnPopExtendAll();
return TRUE;
}
void CDsACD_IVRView::Reset()
{
// m_wndOwnEdit.SetWindowText("");
// SetWindowText(m_csTitle); //恢复窗口标题
m_TreeCtrl->DeleteAllItems(); //删除树中的所有项
g_MapObj.RemoveAllListItem(); //删除链表中的所有项
// m_dwItemCount=0;
m_csOpenFileName.Empty();
// 删除临时文件
CFileFind finder;
if(!m_csCurFileName.IsEmpty())
{
if(finder.FindFile(m_csCurFileName))
DeleteFile(m_csCurFileName);
finder.Close();
m_csCurFileName.Empty();
}
}
//辅助函数,创建临时文件名
CString CDsACD_IVRView::CreateTempFileName()
{
char szPath[MAX_PATH];
CString csTmpFileName;
GetTempPath(MAX_PATH,szPath);
GetTempFileName(szPath,"GJG",0,csTmpFileName.GetBuffer(MAX_PATH+1));
csTmpFileName.ReleaseBuffer();
return csTmpFileName;
}
HTREEITEM CDsACD_IVRView::InsertItemFromFile(CString buf, int nID, HTREEITEM hItem)
{
CString csItemText;
switch (nID)
{
case 0X101:
{
dsACDDataDefine * pObj = new dsACDDataDefine;
hItem = m_TreeCtrl->InsertItem( csTreeItems[0], 0, 0 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
m_hParent1 = hItem;
break;
}
case 0X102:
{
dsACDReturnValue * pObj = new dsACDReturnValue;
hItem = m_TreeCtrl->InsertItem( csTreeItems[1], 1, 1 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
m_hChild = hItem;
break;
}
case 0X301:
{
dsACDFlowBegin * pObj = new dsACDFlowBegin;
hItem = m_TreeCtrl->InsertItem( csTreeItems[2], 2, 2 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
m_hParent2 = hItem;
break;
}
case 0X302:
{
dsACDFlowEnd * pObj = new dsACDFlowEnd;
hItem = m_TreeCtrl->InsertItem( csTreeItems[3], 3, 3 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
m_hParent3 = hItem;
break;
}
case 0X103:
{
dsACDObjVariable * pObj = new dsACDObjVariable;
dsVD_INFO *pInfo = new dsVD_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 4, 4 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X104:
{
dsACDObjDataSort * pObj = new dsACDObjDataSort;
dsDS_INFO *pInfo = new dsDS_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 5, 5 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X105:
{
dsACDDBConnect * pObj = new dsACDDBConnect;
dsDBConn_INFO *pInfo = new dsDBConn_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 6, 6 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X303:
{
dsACDConControl * pObj = new dsACDConControl;
dsCC_INFO *pInfo = new dsCC_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 15, 15 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X304:
{
dsACDConTrue * pObj = new dsACDConTrue;
hItem = m_TreeCtrl->InsertItem( "条件为真", 15, 15 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X305:
{
dsACDConFalse * pObj = new dsACDConFalse;
hItem = m_TreeCtrl->InsertItem( "条件为假", 15, 15 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X306:
{
dsACDSwitch * pObj = new dsACDSwitch;
dsSM_INFO *pInfo = new dsSM_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 16, 16 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X307:
{
dsACDDefaultMatch * pObj = new dsACDDefaultMatch;
hItem = m_TreeCtrl->InsertItem( "缺省匹配", 16, 16 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X308:
{
dsACDMatch * pObj = new dsACDMatch;
dsMM_INFO *pInfo = new dsMM_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 17, 17 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X309:
{
dsACDCirculate * pObj = new dsACDCirculate;
dsCir_INFO *pInfo = new dsCir_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 18, 18 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X30A:
{
dsACDFunction * pObj = new dsACDFunction;
dsFun_INFO *pInfo = new dsFun_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 19, 19 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X30B:
{
dsACDSign * pObj = new dsACDSign;
dsSig_INFO *pInfo = new dsSig_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 20, 20 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X30C:
{
dsACDJump * pObj = new dsACDJump;
dsJmp_INFO *pInfo = new dsJmp_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 21, 21 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X30D:
{
dsACDEndFlow * pObj = new dsACDEndFlow;
hItem = m_TreeCtrl->InsertItem( csTreeItems[22], 22, 22 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X30E:
{
dsACDRestart * pObj = new dsACDRestart;
hItem = m_TreeCtrl->InsertItem( csTreeItems[23], 23, 23 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X201:
{
dsACDOperate * pObj = new dsACDOperate;
dsVO_INFO *pInfo = new dsVO_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem(csItemText, 7, 7 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X202:
{
dsACDConvert * pObj = new dsACDConvert;
dsChar_INFO *pInfo = new dsChar_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem(csItemText, 8, 8 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X203:
{
dsACDDateTime * pObj = new dsACDDateTime;
dsDT_INFO *pInfo = new dsDT_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem(csItemText, 9, 9, hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X204:
{
dsACDDBOperate * pObj = new dsACDDBOperate;
dsDBOpe_INFO *pInfo = new dsDBOpe_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 10, 10 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X205:
{
dsACDGetField * pObj = new dsACDGetField;
dsField_INFO *pInfo = new dsField_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 11, 11 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X206:
{
dsACDQueryCommand * pObj = new dsACDQueryCommand;
dsQC_INFO *pInfo = new dsQC_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 12, 12 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
case 0X207:
{
dsACDQueryParameter * pObj = new dsACDQueryParameter;
dsQP_INFO *pInfo = new dsQP_INFO;
pObj->ReadformFile(buf, pInfo, csItemText);
pObj->Write(pInfo);
hItem = m_TreeCtrl->InsertItem( csItemText, 13, 13 ,hItem);
g_MapObj.AddMapItem(hItem, pObj);
break;
}
default:
break;
}
return hItem;
}
void CDsACD_IVRView::OnFileClose()
{
// TODO: Add your command handler code here
if(m_bModified)
{
int res=AfxMessageBox("要保存所做的修改么?",MB_YESNOCANCEL|MB_ICONQUESTION);
if(res==IDCANCEL)
return;
else if(res==IDYES)
SaveModified();
}
// 删除临时文件
CFileFind finder;
if(!m_csCurFileName.IsEmpty())
{
if(finder.FindFile(m_csCurFileName))
DeleteFile(m_csCurFileName);
finder.Close();
m_csCurFileName.Empty();
}
GetDocument()->OnCloseDocument( );
}
//菜单项"打开"的响应函数
/*void CDsACD_IVRView::OnFileOpen()
{
CFileDialog dlgFile(TRUE,"not",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"笔记本文件(*.not)|*.not|所有文件(*.*)|*.*|");
if(dlgFile.DoModal()==IDOK)
{
CString strFileName=dlgFile.GetPathName();
//提示保存以前更改
if(m_bModified)
{
int res=AfxMessageBox("要保存所做的修改么?" ,MB_YESNOCANCEL|MB_ICONQUESTION);
if(res==IDCANCEL)
return;
else if(res==IDYES)
SaveModified();
else
m_bModified=FALSE;
}
OpenTree(strFileName); //构造树
}
}*/
/*void CDsACD_IVRView::SaveModified()
{
if(m_TreeCtrl->GetCount()>0)
{
if(m_csCurFileName.IsEmpty())
OnFileSaveAs();
else
OnFileSave();
}
}*/
void CDsACD_IVRView::SaveModified()
{
if(m_TreeCtrl->GetCount()>0)
{
if(m_csCurFileName.IsEmpty())
{
CFileDialog fileDlg(FALSE,"not",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"笔记本文件(*.not)|*.not|所有文件(*.*)|*.*|");
if(fileDlg.DoModal()==IDOK)
{
SaveTree(fileDlg.GetPathName());
}
m_bModified=FALSE;
}
else
{
//保存完后重新打开新文件,在OpenTree中调用了Reset()函数
SaveTree(m_csOpenFileName);
m_bModified=FALSE;
}
}
}
void CDsACD_IVRView::OnFileSave()
{
// TODO: Add your command handler code here
if(m_bModified==FALSE)
return;
//如果当前打开文件名为空,说明是建的文件,则调用OnSaveAs()函数
if(m_csOpenFileName.IsEmpty())
{
OnFileSaveAs();
return;
}
else
{
//保存完后重新打开新文件,在OpenTree中调用了Reset()函数
SaveTree(m_csOpenFileName);
OpenTree(m_csOpenFileName);
m_bModified=FALSE;
}
}
//菜单项"保存为"的响应函数
void CDsACD_IVRView::OnFileSaveAs()
{
if(m_TreeCtrl->GetCount()<=0)
return;
CFileDialog fileDlg(FALSE,"not",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"笔记本文件(*.not)|*.not|所有文件(*.*)|*.*|");
if(fileDlg.DoModal()==IDOK)
{
SaveTree(fileDlg.GetPathName());
OpenTree(fileDlg.GetPathName());
}
m_bModified=FALSE;
}
//读取界面上所有的变量名
void CDsACD_IVRView::ReadVariable(CString &csNameString)
{
HTREEITEM hItem = m_hChild;
while (hItem=m_TreeCtrl->GetNextSiblingItem(hItem))
{
dsACDObjectBase * pObj = g_MapObj.FindObj(hItem);
if (pObj->nID == 0X103)
{
dsVD_INFO * pInfo = (dsVD_INFO *)pObj->Read();
csNameString += pInfo->Name + ";";
}
}
}
//读取界面上所有的标号位置
void CDsACD_IVRView::ReadSignPos(CString &csSignString)
{
HTREEITEM hItem = m_hParent2;
while(hItem=GetNextItem(hItem))
{
dsACDObjectBase * pObj = g_MapObj.FindObj(hItem);
if (pObj->nID == 0X30B)
{
dsSig_INFO * pInfo = (dsSig_INFO *)pObj->Read();
csSignString += pInfo->Name + ";";
}
}
}
// 读取界面上所有的数据库连接名
void CDsACD_IVRView::ReadDBConn(CString &csDBString)
{
HTREEITEM hItem = m_hChild;
while (hItem=m_TreeCtrl->GetNextSiblingItem(hItem))
{
dsACDObjectBase * pObj = g_MapObj.FindObj(hItem);
if (pObj->nID == 0X105)
{
dsDBConn_INFO * pInfo = (dsDBConn_INFO *)pObj->Read();
csDBString += pInfo->Name + ";";
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -