?? dsacd_ivrview.cpp
字號(hào):
// dsACD_IVRView.cpp : implementation of the CDsACD_IVRView class
//
#include "stdafx.h"
#include "dsACD_IVR.h"
#include "dsACD_IVRDoc.h"
#include "dsACD_IVRView.h"
#include "VariableDefine.h"
#include "DataSort.h"
#include "DBConnection.h"
#include "ConControl.h"
#include "Switch.h"
#include "Match.h"
#include "Circulate.h"
#include "Function.h"
#include "Sign.h"
#include "Jump.h"
#include "VarOperate.h"
#include "Convert.h"
#include "DateTime.h"
#include "DBOperate.h"
#include "GetField.h"
#include "QueryCommand.h"
#include "QueryParameter.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDsACD_IVRView
static CString csTreeItems[] =
{
_T("數(shù)據(jù)定義"), //0
_T("返回值"), //1
_T("流程開始"), //2
_T("流程結(jié)束"), //3
_T("變量定義:"), //4
_T("數(shù)據(jù)庫連接:"), //5
_T("數(shù)據(jù)分類"), //6
_T("變量運(yùn)算:無變量 = 空 無操作 空"), //7
_T("文字轉(zhuǎn)換:無變量 無操作"), //8
_T("日期時(shí)間:無變量 系統(tǒng)時(shí)間 無操作"), //9
_T("數(shù)據(jù)庫操作:無數(shù)據(jù)庫 無操作"), //10
_T("取字段值:無數(shù)據(jù)庫 空 無變量"), //11
_T("設(shè)置查詢命令:無數(shù)據(jù)庫 自動(dòng)匹配 空"), //12
_T("設(shè)置查詢參數(shù):無數(shù)據(jù)庫 空 空"), //13
_T("帶參數(shù)的查詢命令"), //14
_T("條件控制: 空"), //15
_T("多路分支: 空"), //16
_T("分支匹配: 空"), //17
_T("循環(huán)控制: 空"), //18
_T("程序塊"), //19
_T("標(biāo)號(hào)位置:"), //20
_T("跳轉(zhuǎn)語句: 無標(biāo)號(hào)位置"), //21
_T("開始流程"), //23
_T("接入排隊(duì)"), //24
_T("取得呼入標(biāo)識(shí)ID"), //25
_T("取得主叫信息"), //26
_T("取得被叫信息"), //27
_T("設(shè)置優(yōu)先級(jí)"), //28
_T("查找空閑坐席"), //29
_T("查找最近一次為該接入服務(wù)的座席"),//30
_T("分配接入給座席"), //31
_T("將接入轉(zhuǎn)到座席組"), //32
_T("振鈴: 1次"), //33
_T("應(yīng)答"), //34
_T("呼叫: 空 電話號(hào)碼 20秒"), //35
_T("放音: 空 可中斷"), //36
_T("錄音: 空 20秒 可中斷"), //37
_T("收碼: 無變量 1"), //38
_T("發(fā)碼: 空"), //39
_T("休眠: 1.0秒 可中斷") //40
};
static UINT nImages[] =
{
IDI_PUBLIC, //0
IDI_RETURNVALUE, //1
IDI_PUBLIC, //2
IDI_PUBLIC, //3
IDI_DATADEFINE, //4
IDI_DATADEFINE, //5
IDI_DATADEFINE, //6
IDI_DATAOPERATE, //7
IDI_DATAOPERATE, //8
IDI_DATAOPERATE, //9
IDI_DATAOPERATE, //10
IDI_DATAOPERATE, //11
IDI_DATAOPERATE, //12
IDI_DATAOPERATE, //13
IDI_DATAOPERATE, //14
IDI_FLOWCONTROL, //15
IDI_FLOWCONTROL, //16
IDI_FLOWCONTROL, //17
IDI_FLOWCONTROL, //18
IDI_FLOWCONTROL, //19
IDI_FLOWCONTROL, //20
IDI_FLOWCONTROL, //21
IDI_FLOWCONTROL, //22
IDI_FLOWCONTROL, //23
IDI_ACDOPERATE, //24
IDI_ACDOPERATE, //25
IDI_ACDOPERATE, //26
IDI_ACDOPERATE, //27
IDI_ACDOPERATE, //28
IDI_ACDOPERATE, //29
IDI_ACDOPERATE, //30
IDI_ACDOPERATE, //31
IDI_ACDOPERATE, //32
IDI_IVROPERATE, //33
IDI_IVROPERATE, //34
IDI_IVROPERATE, //35
IDI_IVROPERATE, //36
IDI_IVROPERATE, //37
IDI_IVROPERATE, //38
IDI_IVROPERATE, //39
IDI_IVROPERATE //40
};
/////////////////////////////////////////////////////////////////////////////
// CDsACD_IVRView
IMPLEMENT_DYNCREATE(CDsACD_IVRView, CTreeView)
BEGIN_MESSAGE_MAP(CDsACD_IVRView, CTreeView)
//{{AFX_MSG_MAP(CDsACD_IVRView)
ON_COMMAND(ID_DEF_VARIABLE, OnDefVariable)
ON_COMMAND(ID_DEF_DATASORT, OnDefDatasort)
ON_COMMAND(ID_DEF_DBCONNECTION, OnDefDBconnection)
ON_COMMAND(ID_OPE_CHARCONVERT, OnOpeCharconvert)
ON_COMMAND(ID_OPE_DATATIME, OnOpeDatatime)
ON_COMMAND(ID_OPE_DBOPERATE, OnOpeDboperate)
ON_COMMAND(ID_OPE_FIELDOPERATE, OnOpeFieldoperate)
ON_COMMAND(ID_OPE_QUERYCOMMAND, OnOpeQuerycommand)
ON_COMMAND(ID_OPE_QUERYPARAMETER, OnOpeQueryparameter)
ON_COMMAND(ID_OPE_VAROPERATE, OnOpeVaroperate)
ON_COMMAND(ID_FLOW_SWITCH, OnFlowSwitch)
ON_COMMAND(ID_FLOW_SIGN, OnFlowSign)
ON_COMMAND(ID_FLOW_RESTART, OnFlowRestart)
ON_COMMAND(ID_FLOW_MATCH, OnFlowMatch)
ON_COMMAND(ID_FLOW_JUMP, OnFlowJump)
ON_COMMAND(ID_FLOW_FUNCTION, OnFlowFunction)
ON_COMMAND(ID_FLOW_END, OnFlowEnd)
ON_COMMAND(ID_FLOW_CONDITION, OnFlowCondition)
ON_COMMAND(ID_FLOW_CIRCULATE, OnFlowCirculate)
ON_COMMAND(ID_ACD_ASSIGNTOACDGROUP, OnACDAssigntoACDgroup)
ON_COMMAND(ID_ACD_ASSIGNTOAGENT, OnACDAssigntoAgent)
ON_COMMAND(ID_ACD_FINDEMPTYAGENT, OnACDFindEmptyAgent)
ON_COMMAND(ID_ACD_FINDRECENTAGENT, OnACDFindRecentAgent)
ON_COMMAND(ID_ACD_GETCALLEDINFO, OnACDGetCalledInfo)
ON_COMMAND(ID_ACD_GETCALLERID, OnACDGetCallerID)
ON_COMMAND(ID_ACD_GETCALLERINFO, OnACDGetCallerInfo)
ON_COMMAND(ID_ACD_QUEUECALL, OnACDQueueCall)
ON_COMMAND(ID_ACD_SETPRIORITY, OnACDSetPriority)
ON_COMMAND(ID_IVR_CALL, OnIVRCall)
ON_COMMAND(ID_IVR_PLAY, OnIVRPlay)
ON_COMMAND(ID_IVR_RECEIVECODE, OnIVRReceiveCode)
ON_COMMAND(ID_IVR_RECORD, OnIVRRecord)
ON_COMMAND(ID_IVR_RESPONSE, OnIVRResponse)
ON_COMMAND(ID_IVR_RING, OnIVRRing)
ON_COMMAND(ID_IVR_SENDCODE, OnIVRSendCode)
ON_COMMAND(ID_IVR_SUSPEND, OnIVRSuspend)
ON_NOTIFY_REFLECT(TVN_BEGINDRAG, OnBegindrag)
ON_WM_CREATE()
ON_COMMAND(IDR_POP_DELETE, OnPopDelete)
ON_COMMAND(IDR_POP_PROPERTY, OnPopProperty)
ON_COMMAND(IDR_POP_EXTENDALL, OnPopExtendAll)
ON_COMMAND(IDR_POP_CLOSEALL, OnPopCloseAll)
ON_COMMAND(IDR_POP_EXTENDCURRENT, OnPopExtendCurrent)
ON_COMMAND(IDR_POP_CLOSECURRENT, OnPopCloseCurrent)
ON_WM_RBUTTONDOWN()
ON_COMMAND(ID_FILE_SAVE, OnFileSave)
ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)
ON_WM_KEYDOWN()
ON_COMMAND(ID_FILE_CLOSE, OnFileClose)
ON_WM_LBUTTONDBLCLK()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDsACD_IVRView construction/destruction
CDsACD_IVRView::CDsACD_IVRView()
{
//初始化變量
// m_dwItemCount=0;
m_csCurFileName.Empty();
m_bModified=FALSE;
}
CDsACD_IVRView::~CDsACD_IVRView()
{
}
BOOL CDsACD_IVRView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CTreeView::PreCreateWindow(cs);
}
int CDsACD_IVRView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CTreeView::OnCreate(lpCreateStruct) == -1)
return -1;
// Register Tree control as a drop target
m_CTreeDropTarget.Register(this);
return 0;
}
/////////////////////////////////////////////////////////////////////////////
// CDsACD_IVRView drawing
void CDsACD_IVRView::OnDraw(CDC* pDC)
{
CDsACD_IVRDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
void CDsACD_IVRView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
GetParentFrame ( )->SetWindowText (_T ("ACD編輯窗口"));
// TODO: You may populate your TreeView with items by directly accessing
// its tree control through a call to GetTreeCtrl().
m_TreeCtrl = &GetTreeCtrl();
m_TreeCtrl->ModifyStyle (0, TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT);
m_TreeCtrl->SetBkColor(RGB(0,0,0));
m_TreeCtrl->SetTextColor(RGB(0,255,0));
// m_Font.CreatePointFont (85, _T("Tahoma"));
// m_TreeCtrl->SetFont (&m_Font);
m_ImageList.Create (16, 16, true, 2, 1);
HICON hIcon;
for (int i =0; i < 41; ++i)
{
hIcon= AfxGetApp()->LoadIcon (nImages[i]);
m_ImageList.Add (hIcon);
}
m_TreeCtrl->SetImageList( &m_ImageList, TVSIL_NORMAL );
// add the first parent item
m_hParent1 = m_TreeCtrl->InsertItem( csTreeItems[0], 0, 0 );
dsACDObjectBase * pObj0 = new dsACDDataDefine;
g_MapObj.AddMapItem(m_hParent1, pObj0);
// add childeren items
m_hChild = m_TreeCtrl->InsertItem (csTreeItems[1], 1, 1, m_hParent1, TVI_LAST);
dsACDObjectBase * pObj1 = new dsACDReturnValue;
g_MapObj.AddMapItem(m_hChild, pObj1);
// add other parent items
m_hParent2 = m_TreeCtrl->InsertItem( csTreeItems[2], 2, 2 );
dsACDObjectBase * pObj2 = new dsACDFlowBegin;
g_MapObj.AddMapItem(m_hParent2, pObj2);
m_hParent3 = m_TreeCtrl->InsertItem( csTreeItems[3], 3, 3);
dsACDObjectBase * pObj3 = new dsACDFlowEnd;
g_MapObj.AddMapItem(m_hParent3, pObj3);
m_TreeCtrl->Expand(m_hParent1, TVE_EXPAND);
// GetWindowText(m_csTitle); //獲得程序剛啟動(dòng)時(shí)的窗口標(biāo)題
}
/////////////////////////////////////////////////////////////////////////////
// CDsACD_IVRView diagnostics
#ifdef _DEBUG
void CDsACD_IVRView::AssertValid() const
{
CTreeView::AssertValid();
}
void CDsACD_IVRView::Dump(CDumpContext& dc) const
{
CTreeView::Dump(dc);
}
CDsACD_IVRDoc* CDsACD_IVRView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDsACD_IVRDoc)));
return (CDsACD_IVRDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CDsACD_IVRView message handlers
HTREEITEM CDsACD_IVRView::AddFlowCondition(HTREEITEM hParent, HTREEITEM hInsertAfter)
{
HTREEITEM hConditionItem ;
HTREEITEM hConditionTrue ;
HTREEITEM hConditionFalse;
hConditionItem = m_TreeCtrl->InsertItem (csTreeItems[15], 15, 15, hParent, hInsertAfter);
dsCC_INFO * pCCInfo = new dsCC_INFO;
dsACDObjectBase * pObj0 = new dsACDConControl;
pObj0->Write(pCCInfo);
g_MapObj.AddMapItem(hConditionItem, pObj0);
hConditionTrue = m_TreeCtrl->InsertItem ("條件為真", 15, 15, hConditionItem, TVI_FIRST);
dsACDObjectBase * pObj1 = new dsACDConTrue;
g_MapObj.AddMapItem(hConditionTrue, pObj1);
hConditionFalse = m_TreeCtrl->InsertItem ("條件為假", 15, 15, hConditionItem, TVI_LAST);
dsACDObjectBase * pObj2 = new dsACDConFalse;
m_TreeCtrl->Expand(hConditionItem, TVE_EXPAND);
m_TreeCtrl->Expand(hParent, TVE_EXPAND);
m_bModified=TRUE;
return hConditionItem;
}
HTREEITEM CDsACD_IVRView::AddFlowSwitch(HTREEITEM hParent, HTREEITEM hInsertAfter)
{
HTREEITEM hSwitchItem ;
HTREEITEM hDefaultMatch;
hSwitchItem = m_TreeCtrl->InsertItem (csTreeItems[16], 16, 16, hParent, hInsertAfter);
dsSM_INFO * pSMInfo = new dsSM_INFO;
dsACDObjectBase * pObj0 = new dsACDSwitch;
pObj0->Write(pSMInfo);
g_MapObj.AddMapItem(hSwitchItem, pObj0);
hDefaultMatch = m_TreeCtrl->InsertItem ("缺省匹配", 16, 16, hSwitchItem, TVI_LAST);
dsACDObjectBase * pObj1 = new dsACDDefaultMatch;
g_MapObj.AddMapItem(hDefaultMatch, pObj1);
m_TreeCtrl->Expand(hSwitchItem, TVE_EXPAND);
m_TreeCtrl->Expand(hParent, TVE_EXPAND);
m_bModified=TRUE;
return hSwitchItem;
}
HTREEITEM CDsACD_IVRView::AddGeneralOperate(int i)
{
HTREEITEM hSelectedItem = m_TreeCtrl->GetSelectedItem();
HTREEITEM hSelectedItemBackup = hSelectedItem;
HTREEITEM hParentItem = m_TreeCtrl->GetParentItem(hSelectedItem);
HTREEITEM hItem;
if (NULL != hParentItem)
hSelectedItem = hParentItem;
if(m_hParent1 == hSelectedItem)
{
hItem = m_TreeCtrl->InsertItem (csTreeItems[i], i, i, m_hParent2, TVI_LAST);
m_TreeCtrl->Expand(m_hParent2, TVE_EXPAND);
}
else if(m_hParent2 == hSelectedItem)
{
hItem = m_TreeCtrl->InsertItem (csTreeItems[i], i, i, m_hParent2, m_TreeCtrl->GetSelectedItem());
m_TreeCtrl->Expand(m_hParent2, TVE_EXPAND);
}
else if(m_hParent3 == hSelectedItem)
{
hItem = m_TreeCtrl->InsertItem (csTreeItems[i], i, i, m_hParent3, m_TreeCtrl->GetSelectedItem());
m_TreeCtrl->Expand(m_hParent3, TVE_EXPAND);
}
else
{
CString csItemName = m_TreeCtrl->GetItemText(hParentItem);
if (csItemName.Left(8) == _T("條件控制") || csItemName.Left(8) == _T("多路分支"))
{
hItem = m_TreeCtrl->InsertItem (csTreeItems[i], i, i, hSelectedItemBackup, TVI_FIRST);
m_TreeCtrl->Expand(hSelectedItemBackup, TVE_EXPAND);
}
else
{
hItem = m_TreeCtrl->InsertItem (csTreeItems[i], i, i, hParentItem, m_TreeCtrl->GetSelectedItem());
m_TreeCtrl->Expand(hParentItem, TVE_EXPAND);
}
}
m_TreeCtrl->SelectItem(hItem);
m_bModified=TRUE;
return hItem;
}
void CDsACD_IVRView::OnDefVariable()
{
static int j= 0;
j++;
CString csTemp;
csTemp.Format("%s%d", "新變量", j);
CString csNewVariable = csTreeItems[4] + csTemp;
HTREEITEM hItem = m_TreeCtrl->InsertItem (csNewVariable, 4, 4, m_hParent1, m_TreeCtrl->GetSelectedItem());
m_TreeCtrl->SelectItem(hItem);
dsVD_INFO * pVDInfo = new dsVD_INFO;
pVDInfo->Name = csTemp;
dsACDObjectBase * pObj = new dsACDObjVariable;
pObj->Write(pVDInfo);
g_MapObj.AddMapItem(hItem,pObj);
m_bModified=TRUE;
}
void CDsACD_IVRView::OnDefDatasort()
{
HTREEITEM hItem = m_TreeCtrl->InsertItem (csTreeItems[6], 6, 6, m_hParent1, m_TreeCtrl->GetSelectedItem());
m_TreeCtrl->SelectItem(hItem);
dsDS_INFO * pDSInfo = new dsDS_INFO;
dsACDObjectBase * pObj = new dsACDObjDataSort;
pObj->Write(pDSInfo);
g_MapObj.AddMapItem(hItem,pObj);
m_bModified=TRUE;
}
void CDsACD_IVRView::OnDefDBconnection()
{
static int j= 0;
j++;
CString csTemp;
csTemp.Format("%s%d", "新數(shù)據(jù)庫", j);
CString csNewVariable = csTreeItems[5] + csTemp + "自動(dòng)匹配 空";
HTREEITEM hItem = m_TreeCtrl->InsertItem (csNewVariable, 5, 5, m_hParent1, m_TreeCtrl->GetSelectedItem());
m_TreeCtrl->SelectItem(hItem);
dsDBConn_INFO * pInfo = new dsDBConn_INFO;
pInfo->Name = csTemp;
pInfo->Type = "自動(dòng)匹配";
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -