#include "StdAfx.h" #include "akGroupCtrl.h" #include "akStaticGroup.h" #include "akGroupDraw.h" CakGroupCtrl::CakGroupCtrl(void) { } CakGroupCtrl::~CakGroupCtrl(void) { clear(); } void CakGroupCtrl::clear() { std::map::iterator itor; for(itor = m_mapControls.begin(); itor!=m_mapControls.end(); itor++) { CakStaticGroup* pControl = (CakStaticGroup*)itor->second; pControl->DestroyWindow(); delete pControl; } m_mapControls.clear(); } void CakGroupCtrl::addControl( int nIDCtl, CWnd* pParent ) { _GroupCtrlOption* pOption = &m_CtrlOption; if(pOption->nStyle == 0) { CakStaticGroup* pControl; std::map::iterator itor = m_mapControls.find(nIDCtl); if(itor != m_mapControls.end()) { pControl = (CakStaticGroup*)m_mapControls[nIDCtl]; } else { pControl = new CakStaticGroup; pControl->SubclassDlgItem(nIDCtl, pParent); } pControl->setImage(pOption->nResourceID); pControl->setTransparency(true, pOption->clrTransparency); pControl->m_rectMargin = pOption->rectMargin; char *pFontName = NULL; if(pOption->strFontName.IsEmpty() == FALSE) pFontName = (char*)pOption->strFontName.GetBuffer(); pControl->setFont(pFontName, pOption->nFontSize); pControl->m_nTitlePosX = pOption->nTextPosX; pControl->m_nTitlePosY = pOption->nTextPosY; m_mapControls[nIDCtl] = (void*)pControl; //m_mapControls.push_back((void*)pControl); } else if(pOption->nStyle == 1) { CakGroupDraw* pControl; std::map::iterator itor = m_mapControls.find(nIDCtl); if(itor != m_mapControls.end()) { pControl = (CakGroupDraw*)m_mapControls[nIDCtl]; } else { pControl = new CakGroupDraw; _GroupDrawOption op = pControl->getGroupDrawOption(); op.nTitleHeight = pOption->nTitleHeight; pControl->setGroupDrawOption(op); pControl->SubclassDlgItem(nIDCtl, pParent); } _GroupDrawOption op = pControl->getGroupDrawOption(); { op.nDrawStyle = pOption->nStyleSub; op.clrTitle = pOption->clrTitle; op.clrBack = pOption->clrBack; op.clrOutline = pOption->clrOutline; op.clrTransparency = pOption->clrTransparency; op.bTextEnable = pOption->bTextEnable; op.strFontName = pOption->strFontName; op.nFontSize = pOption->nFontSize; op.nTextPosX = pOption->nTextPosX; op.nTextPosY = pOption->nTextPosY; op.clrFontNormal = pOption->clrFontNormal; op.clrFontPush = pOption->clrFontPush; op.clrFontMouseOver = pOption->clrFontMouseOver; op.clrFontDisable = pOption->clrFontDisable; op.bTextShadow = pOption->bTextShadow; op.nTextShadowX = pOption->nTextShadowX; op.nTextShadowY = pOption->nTextShadowY; op.nTitleHeight = pOption->nTitleHeight; for(int i=0; i<16; i++) { op.clrReserved[i] = pOption->clrReserved[i]; } } pControl->setFont((char*)pOption->strFontName.GetBuffer(0), pOption->nFontSize); pControl->setGroupDrawOption(op); m_mapControls[nIDCtl] = (void*)pControl; } } void CakGroupCtrl::setCtrlOption( _GroupCtrlOption GroupCtrlOption ) { if(m_CtrlOption.strFontName != GroupCtrlOption.strFontName || m_CtrlOption.nFontSize != GroupCtrlOption.nFontSize) { _GroupCtrlOption* pOption = &m_CtrlOption; if(pOption->nStyle == 0) { char *pFontName = NULL; if(GroupCtrlOption.strFontName.IsEmpty() == FALSE) pFontName = (char*)GroupCtrlOption.strFontName.GetBuffer(); std::map::iterator itor; for(itor = m_mapControls.begin(); itor!=m_mapControls.end(); itor++) { CakStaticGroup* pControl = (CakStaticGroup*)itor->second; pControl->setFont(pFontName, GroupCtrlOption.nFontSize); } } } m_CtrlOption=GroupCtrlOption; } CStatic* CakGroupCtrl::GetDlgItem( int nIDCtl ) { return (CStatic*)m_mapControls[nIDCtl]; }