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

📄 dsacd_ivrview.cpp

📁 dsacd_ivr 的实现
💻 CPP
📖 第 1 页 / 共 4 页
字号:
				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 + -