class CMyContainer : public CCoeControl
{
。。。。。。。。。。。
private:
enum{
ELabelUsr = 0,
ELabelPwd,
EEditUsr,
EEditPwd,
ECheckBox,
ELastControl
};
CMyLabel *iLabelUsr,*iLabelPwd;
CMyEdwin* iEditUsr;
CMySecretEditor* iEditPwd;
CMyCheckBox* iCheckBox;
};
方法一:
override
virtual TInt CCoeControl::CountComponentControls
() const;
virtual CCoeControl* CCoeControl::ComponentControl
(TInt aIndex) const;
CCoeControl* CMyContainer::ComponentControl(TInt aIndex) const
{
// ASSERT(aIndex<ELastControl);
switch(aIndex){
case ELabelUsr: return iLabelUsr;
break;
case ELabelPwd: return iLabelPwd;
break;
case EEditUsr: return iEditUsr;
break;
case EEditPwd: return iEditPwd;
break;
case ECheckBox: return iCheckBox;
break;
}
return NULL;
}
TInt CMyContainer::CountComponentControls() const
{
return ELastControl;
}
方法二:
void CMyContainer::InitializeControlsL()
{
................. // create all controls
InitComponentArrayL();
CCoeControlArray& ca = Components();
ca.AppendLC
(iLabelUsr,ELabelUsr);
ca.AppendLC(iLabelPwd,ELabelPwd);
ca.AppendLC(iEditUsr,EEditUsr);
ca.AppendLC(iEditPwd,EEditPwd);
ca.AppendLC(iCheckBox,ECheckBox);
CleanupStack::Pop(ELastControl);
}
CMyContainer::~CMyContainer()
{
...................... //delete controls
Components().Reset();
//have to reset, otherwise crash (3rd)
}
本文深入探讨了C++中特定容器类的实现细节,包括枚举定义、初始化方法以及组件控制的实现方式。通过实例展示了如何管理不同类型的控件,如标签、编辑框和复选框,并提供了组件控制的访问方法。文章旨在为读者提供在C++应用中高效创建和操作UI元素的技术指导。
1512

被折叠的 条评论
为什么被折叠?



