Тема: Обработка сообщений для MFC-контролов

Привет всем!
1. У меня есть класс, наследованный от CListCtrl. В нем перекрыт базовый метод OnLButtonDblClk - обработчик двойного клика.
2. Команда акада показывает диалоговое окно, в этом окне динамически создается объект моего класса.
3. При двойном клике по завершении обработчика вываливается Access Violation. Внутри обработчика ошибок нет - он пустой.
Пробовал тестировать класс вне arx - все работает.
С чем это может быть связано?
Заранее спасибо всем.

Re: Обработка сообщений для MFC-контролов

Возможно, проблема связана с прямым наследованием от
MFC-класса CListCtrl. В OARX-приложении необходимо наследовать от соотв. классов из семейства AcUi- или AdUi-; в данном случае - от CAcUiListCtrl.
Кстати, в MFC есть пример под названием daoview (с восточным "видением пути" ничего общего не имеет:). Там есть очень удобная оболочка CListCtrlEx для класса CListCtrl, упрощающая его использование. Но, опять же, для использования этой оболочки в OARX, надо использовать не её, а написать по её образу и подобию собственную оболочку (CAcUiListCtrlEx), наследующую соответственно от CAcUiListCtrl.

Re: Обработка сообщений для MFC-контролов

Попробовал наследовать от CAcUiListCtrl. Эффект тот же.

Re: Обработка сообщений для MFC-контролов

А ты не забыл о переключении ресурсов?
Используешь ли ты CAcModuleResourceOverride()?

Re: Обработка сообщений для MFC-контролов

А фиг его знает, правильно ли я ресурсы перекрываю.
Для модальных диалогов все понятно. Создаем объект класса  CAcModuleResourceOverride, вызываем DoModal, удаляем объект.
А для немодальных-то диалогов чего делать? Моя немодальная форма создается в одном месте, а показывается в другом. Так что я перекрываю ресурсы так:
func1()
{
    ...
    myResources=new CAcModuleResourceOverride();
    HWND hwndAcad = adsw_acadMainWnd();
    if (!hwndAcad)
    {
        AfxMessageBox( "Unable to locate AutoCAD parent window." );
        return false;
    }
    CWnd *pWnd = CWnd::FromHandle ( hwndAcad );
    if (!resForm)
    {
        if (!(resForm=new CSpellResultForm(pWnd)))
        {
            AfxMessageBox ( "Unable to allocate result dialog." );
            return false;
        }
        if (!resForm->Create(pWnd))
        {
            AfxMessageBox ( "Unable to create result dialog." );
            return false;
        }
    }
    pWnd->SetFocus();
      ...
    delete myResources;
    ...
}

func2()
{
    ...
    CAcModuleResourceOverride *myResources=new CAcModuleResourceOverride();
    resForm->ShowWindow(SW_SHOWNORMAL);
    delete myResources;
}
Не знаю, насколько это правильно. Кто знает, прокомментируйте, пожалуйста.

Re: Обработка сообщений для MFC-контролов

P.S.:
Чтобы избежать дополнительных вопросов, замечу, что WM_ACAD_KEEPFOCUS я ловлю.