// ExtenGrid.cpp : 实现文件 // #include "stdafx.h" #include "FirstStep.h" #include "GridExten.h" // CExtenGrid IMPLEMENT_DYNAMIC(CGridExten, CMFCPropertyGridCtrl) CGridExten::CGridExten() { } CGridExten::~CGridExten() { } /***************************************************************** **【函数名称】 __locate **【函数功能】 定位分机 **【参数】 **【返回值】 ****************************************************************/ CMFCPropertyGridProperty* CGridExten::__locate( UINT ExtenId ) { for(int i = 0; i < GetPropertyCount(); ++i) { CMFCPropertyGridProperty* pExten = GetProperty(i); ASSERT(pExten != NULL); if(pExten->GetData() == ExtenId) return pExten; } return NULL; } /***************************************************************** **【函数名称】 init **【函数功能】 初始化 **【参数】 **【返回值】 ****************************************************************/ void CGridExten::init( void ) { EnableHeaderCtrl(TRUE, _T("分机号"), _T("接入密码")); SetVSDotNetLook(); CRect rect; GetClientRect(rect); HDITEM item; item.cxy = rect.Width() / 3; item.mask = HDI_WIDTH; GetHeaderCtrl().SetItem(0, &item); const ExtenMap& ExtMap = CConfig::GetInstance().extenMap(); const ExtenMap::CPair* pPair = ExtMap.PGetFirstAssoc(); while(pPair != NULL) { addExten(pPair->key, pPair->value); pPair = ExtMap.PGetNextAssoc(pPair); } } /***************************************************************** **【函数名称】 addExten **【函数功能】 添加分机 **【参数】 **【返回值】 ****************************************************************/ void CGridExten::addExten( UINT ExtenId, LPCTSTR Password ) { CString StrExtenId; StrExtenId.Format(_T("%u"), ExtenId); CString StrPassword = _T(""); if(Password != NULL) StrPassword = Password; CMFCPropertyGridProperty* pExten = __locate(ExtenId); if(pExten == NULL) { pExten = new CMFCPropertyGridProperty(StrExtenId, StrPassword, NULL, ExtenId); ASSERT(pExten != NULL); AddProperty(pExten); } else { if(Password != NULL) pExten->SetValue(Password); } } /***************************************************************** **【函数名称】 delExten **【函数功能】 删除分机 **【参数】 **【返回值】 ****************************************************************/ void CGridExten::delExten( UINT ExtenId ) { CMFCPropertyGridProperty* pExten = __locate(ExtenId); if(pExten != NULL) DeleteProperty(pExten); } /***************************************************************** **【函数名称】 upload **【函数功能】 上传分机信息 **【参数】 **【返回值】 ****************************************************************/ void CGridExten::upload( void ) { ExtenMap& ExtenMap = CConfig::GetInstance().extenMap(); ExtenMap.RemoveAll(); UINT ExtenId; CString Password; CMFCPropertyGridProperty* pExten = NULL; for (int i = 0; i < GetPropertyCount(); ++i) { pExten = GetProperty(i); ASSERT(pExten != NULL); sscanf_s(pExten->GetName(), "%u", &ExtenId); Password = pExten->GetValue(); ExtenMap.SetAt(ExtenId, Password); } } BEGIN_MESSAGE_MAP(CGridExten, CMFCPropertyGridCtrl) END_MESSAGE_MAP() // CExtenGrid 消息处理程序