Тема: Фатальная ошибка (немодальный диалог, ACAD2011)

Не без помощи книги Полещука "настройка и адаптация...2006" и визарда создал немодальный диалог.
Компиляция происходит успешно, приложение загружается и работает (вроде все нормально). Затем я выгружаю приложение.
И тут самое интересное - снова загружаю приложение, пытаюсь его запустить и происходит фатальная ошибка.
Точно не знаю что именно надо из кода приложить. Может это подойдет:
Запуск приложения:

    static void MP_CALC_MpArm(void)
    {
        // Add your code for command Arm2._MpArm here
        if(!g_pModeless){
            CAcModuleResourceOverride resOverride;
            g_pModeless = new CArmDlg(acedGetAcadFrame());
            g_pModeless->Create(IDD_ARMDLG);
            g_pModeless->ShowWindow(SW_SHOWNORMAL);
            gbDisplayDialog = true;
        }
        else {
            if(!g_pModeless->IsWindowVisible() ||
                g_pModeless->IsIconic()){
                g_pModeless->ShowWindow(SW_SHOWNORMAL);
                gbDisplayDialog = true;}
            else{
                MessageBox(NULL, _T("Окно уже активно"),
                _T("Предупреждение"), MB_OK | MB_ICONINFORMATION);
                gbDisplayDialog = true;}
        } // if(!g_pModeless)
    }

Удаление:

void CArmDlg::OnCancel()
{
    gbDisplayDialog = false;
    DestroyWindow();
}
void CArmDlg::PostNcDestroy()
{
    delete this;
    if(g_pModeless) {g_pModeless = NULL;}
    CAcUiDialog::PostNcDestroy();
}
    virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
        // TODO: Add your code here
        delete g_pModeless, diams, massa, area;
        if(g_pModeless) {g_pModeless = NULL;}
        // You *must* call On_kUnloadAppMsg here
        AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;
        return (retCode) ;
    }

Re: Фатальная ошибка (немодальный диалог, ACAD2011)

много кода :(
и самое главное, та не понял прелести работы с немодальным диалогом (может в книге этого и нет, точно не скажу).
зачем его удалять каждый раз по нажатию на ОК или CANCEL? его ведь можно просто прятать - ShowWindow(SW_HIDE). тогда у тебя будет создаваться диалог всего один единственный раз. это очень сильно экономит время и память компа, если он коряво  удаляется :)
попробуй сделать так. по вызову команды, у тебя если g_pModeless == NULL, то создаешь диалог, потом какая-то функция инициализации начаьными данными, потом ShowWondow(SW_SHOW). все динамические данные, которые создаются внутри класса диалога, убивай в функции OnDestroy() этого же класса. по событиям OnOK, OnCancel, OnClose просто переписывай значения переменных и прячь окно.
ну а когда у тебя идет выгрузка ARX (On_kUnloadAppMsg)? то тут

if (g_pModeless) delete g_pModeless;

и все. не нужна эта куча мусорного кода, в котором можно долго путаться, что ты в принципе и сделал :)

Re: Фатальная ошибка (немодальный диалог, ACAD2011)

Добрый вечер! Вопрос в продолжение темы.
Как в целом создать немодальное окно?
Я создал класс через обычный MFC Class Wizard. При помощи метода DoModal() все прекрасно работает - окно отображается в Autocad.
А через ShowWindow(SW_SHOWNORMAL) ничего не происходит.
Подскажите куда копать?

CAcModuleResourceOverride resOverride;
MainForm form = new MainForm;
form.Create(IDD_MAINFORM);
form.ShowWindow(SW_SHOWNORMAL);

Re: Фатальная ошибка (немодальный диалог, ACAD2011)

Разобрался по книге Полещука.

Re: Фатальная ошибка (немодальный диалог, ACAD2011)

Рекомендую задавать вопросы здесь: http://adn-cis.org/forum/index.php?board=3.0
Вероятность быстрого и точного ответа там значительно выше.