如果您只想使用 Count 参数读取文件,创建您的按钮,使用它们,然后将它们全部删除,那么CArray<CButton*>
我认为很好。为了确保按钮被删除,您可以将 CArray 包装到一个帮助器中,例如:
class CMyButtonArrayWrapper
{
public:
CMyButtonArrayWrapper();
virtual ~CMyButtonArrayWrapper();
void ClearArray();
void Add(CButton* theButton);
private:
CArray<CButton*> m_Array;
}
CMyButtonArrayWrapper::CMyButtonArrayWrapper()
{
}
CMyButtonArrayWrapper::~CMyButtonArrayWrapper()
{
ClearArray();
}
void CMyButtonArrayWrapper::ClearArray()
{
for (int i=0; i<m_Array.GetSize(); i++)
{
CButton* aButton=m_Array.GetAt(i);
if (aButton)
delete aButton;
}
m_Array.RemoveAll();
}
void CMyButtonArrayWrapper::Add(CButton* theButton)
{
m_Array.Add(theButton);
}
然后将此类的一个对象作为成员添加到您的自定义控件 ( m_MyButtonArrayWrapper
) 并添加您的按钮:
CButton* aButton=new CButton;
aButton->Create( ... );
m_MyButtonArrayWrapper.Add(aButton);
如果您需要随机添加和删除按钮CList
,出于性能原因可能更适合。(但您可能不会注意到使用 CArray 的 InsertAt/RemoveAt 的性能差异,除了您的 UI 有数千个按钮。我想这将是一件艺术品而不是用户界面 :))