// GridTrunkMatch.cpp : 实现文件 // #include "stdafx.h" #include "FirstStep.h" #include "GridTrunkMatch.h" #include "TrunkMatch.h" #include "Config.h" // CGridTrunkMatch IMPLEMENT_DYNAMIC(CGridTrunkMatch, CMFCPropertyGridCtrl) CGridTrunkMatch::CGridTrunkMatch() { } CGridTrunkMatch::~CGridTrunkMatch() { } /***************************************************************** **【函数名称】 __locate **【函数功能】 定位中继匹配 **【参数】 **【返回值】 ****************************************************************/ CMFCPropertyGridProperty* CGridTrunkMatch::__locate( UINT TrunkMatchId ) { int Count = GetPropertyCount(); CMFCPropertyGridProperty* pTrunkMatch = NULL; for(int i = 0; i < Count; ++i) { pTrunkMatch = GetProperty(i); ASSERT(pTrunkMatch != NULL); if(pTrunkMatch->GetData() == TrunkMatchId) return pTrunkMatch; } return NULL; } /***************************************************************** **【函数名称】 __add **【函数功能】 添加指定中继匹配 **【参数】 **【返回值】 ****************************************************************/ void CGridTrunkMatch::__add( TRUNK_MATCH* pTrunkMatch ) { CString Data; Data.Format(_T("中继匹配%d"), pTrunkMatch->Id); CMFCPropertyGridProperty* pTrunkMatchUI = new CMFCPropertyGridProperty(Data, pTrunkMatch->Id); pTrunkMatchUI->AddSubItem(new CMFCPropertyGridProperty(_T("字冠"), pTrunkMatch->Prefix, NULL, pTrunkMatch->Id)); pTrunkMatchUI->AddSubItem(new CMFCPropertyGridProperty(_T("透传号码"), pTrunkMatch->Caller, NULL, pTrunkMatch->Id)); Data.Format(_T("%d"), pTrunkMatch->TrunkItemId); pTrunkMatchUI->AddSubItem(new CMFCPropertyGridProperty(_T("中继项ID"), Data, NULL, pTrunkMatch->Id)); Data.Format(_T("%d"), pTrunkMatch->Priority); CMFCPropertyGridProperty* pPriority = new CMFCPropertyGridProperty(_T("优先级"), Data, _T("相同字冠优先级高的先被匹配"), pTrunkMatch->Id); pPriority->AddOption(CONST_STR_TRUNK_MATCH_PRIORITY_NORMAL); pPriority->AddOption(CONST_STR_TRUNK_MATCH_PRIORITY_HIGH); pPriority->AddOption(CONST_STR_TRUNK_MATCH_PRIORITY_HIGHER); pPriority->AddOption(CONST_STR_TRUNK_MATCH_PRIORITY_HIGHEST); pPriority->AllowEdit(FALSE); pTrunkMatchUI->AddSubItem(pPriority); AddProperty(pTrunkMatchUI); } /***************************************************************** **【函数名称】 init **【函数功能】 初始化 **【参数】 **【返回值】 ****************************************************************/ void CGridTrunkMatch::init( void ) { EnableHeaderCtrl(FALSE); SetVSDotNetLook(); CRect rect; GetClientRect(rect); HDITEM item; item.cxy = rect.Width() / 3; item.mask = HDI_WIDTH; GetHeaderCtrl().SetItem(0, &item); CTrunkMatch& TrunkMatch = CConfig::GetInstance().trunkMatch(); POSITION Pos = TrunkMatch.GetHeadPosition(); while(Pos != NULL) { TRUNK_MATCH* pMatch = TrunkMatch.GetNext(Pos); ASSERT(pMatch != NULL); __add(pMatch); } } /***************************************************************** **【函数名称】 addTrunkMatch **【函数功能】 添加TrunkMatch **【参数】 **【返回值】 ****************************************************************/ bool CGridTrunkMatch::addTrunkMatch( UINT TrunkMatchId ) { if(__locate(TrunkMatchId) != NULL) return false; TRUNK_MATCH Match = { 0 }; Match.Id = TrunkMatchId; Match.Priority = CONST_TRUNK_MATCH_PRIORITY_HIGHEST; __add(&Match); return true; } /***************************************************************** **【函数名称】 delTrunkMatch **【函数功能】 删除TrunkMatch **【参数】 **【返回值】 ****************************************************************/ void CGridTrunkMatch::delTrunkMatch( UINT TrunkMatchId ) { CMFCPropertyGridProperty* pMatch = __locate(TrunkMatchId); if(pMatch != NULL) DeleteProperty(pMatch); } /***************************************************************** **【函数名称】 upload **【函数功能】 上传TrunkMatch信息 **【参数】 **【返回值】 ****************************************************************/ void CGridTrunkMatch::upload( void ) { CTrunkMatch& TrunkMatch = CConfig::GetInstance().trunkMatch(); TrunkMatch.Free(); TRUNK_MATCH* pMatch = NULL; CString Value; CMFCPropertyGridProperty* pMatchOnUI = NULL; for (int i = 0; i < GetPropertyCount(); ++i) { pMatchOnUI = GetProperty(i); ASSERT(pMatchOnUI != NULL); pMatch = new TRUNK_MATCH; ZeroMemory(pMatch, sizeof(TRUNK_MATCH)); pMatch->Id = pMatchOnUI->GetData(); Value = pMatchOnUI->GetSubItem(TRUNK_MATCH_SUBITEM_PREFIX)->GetValue(); lstrcpy(pMatch->Prefix, Value); Value = pMatchOnUI->GetSubItem(TRUNK_MATCH_SUBITEM_CALLER)->GetValue(); lstrcpy(pMatch->Caller, Value); Value = pMatchOnUI->GetSubItem(TRUNK_MATCH_SUBITEM_TRUNK_ITEM_ID)->GetValue(); sscanf_s(Value, "%d", &pMatch->TrunkItemId); Value = pMatchOnUI->GetSubItem(TRUNK_MATCH_SUBITEM_PRIORITY)->GetValue(); sscanf_s(Value, "%d", &pMatch->Priority); TrunkMatch.AddTail(pMatch); } } BEGIN_MESSAGE_MAP(CGridTrunkMatch, CMFCPropertyGridCtrl) END_MESSAGE_MAP() // CGridTrunkMatch 消息处理程序