Доброе время суток, многоуважаемый Олл
Помогите решить проблему. В программе на VC++ есть немодальный диалог. Его единственный экземпляр существует все время жизни программы и разрушается при выходе из нее. На диалоге на ходится VSFlexGrid (7.0 Light).
В некоторых случаях (вроде бы закономерность не улавливается) при отработке деструктора возникает unhandled exception. Отладчик показывает следующее дерево вызовов:
CMyDialog::~CMyDialog()
{
. . .
} -> текущая строка
~_com_ptr_t() throw()
{
_Release();
} -> текущая строка
void _Release() throw()
{
if (m_pInterface != NULL) {
m_pInterface->Release(); // здесь ошибка
}
}
Две последние функции из файла COMIP.H (Copyright Microsoft).
Указатель m_pInterface в функции _Release это указатель, через который я работаю с VSFlexGrid. Он был получен следующим путем:
в объявлении класса:
CVSFlexGrid m_grd;
IVSFlexGridPtr m_grdi;
в OnInitDialog:
m_grdi = m_grd.GetControlUnknown();
В проекте существует много диалогов и view с VSFlexGrid, но проблема только с этим
Подскажите пожалуйста, в чем глюк и в какую сторону копать.
Заранее благодарен за идеи.