проблема с удалением динамически созданных контролов
От: 2can  
Дата: 12.05.05 13:37
Оценка:
Динамически создаю контролы на окне. Там есть CButton, CEdit и ещё несколько моих собственных контролов
типа
class CMyControl : CWindowImpl<CMyControl, CEdit>
{
...


Понятно, что для стандартных контролов вообще не обязательно сохранять куда-то даже их HWND (кроме как для DataExchange).
Естесвенно, а вот мои собсвенные — нужно сохранять и в деструкторе окна удалять.

Так вот проблемма следующая.

я записываю указатели на разные CMyControl1, CMyControl2 и т.д. в
CSimpleValArray<CWindow*> m_controls;

Но т.к. CMyControlN является наследнеком не только CWindow, но и CMessageLoop, то при попытке сделать
for(int i = 0; i < m_controls.GetSize(); i++ )
   delete m_controls[i];

получаю Access Violation, что в общем-то логично.

Понятно, что можно создать типизированные массивы CSimpleValArray<CMyControl1*>, CSimpleValArray<CMyControl2*> и т.д.,
но хотелось бы какой-то универсальности, что бы можно было добавлять новые типа контролов без особых переделок окна-родителя.
Есть идеи?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.