Тема: Снова проблемы с открытием-закрытием документов:(

Продолжаю проект, к которому относится ветка:
"acDocManager->appContextOpenDocument( pszFileName ) возвращает Acad::eNotApplicable"

Работа ведётся в контексте приложения. Последовательно открываются/закрываются несколько файлов в новых документах.

Как я понял, вызов функции
acDocManager->closeDocument( AcApDocument* pDoc );
не производит немедленного закрытия документа, а откладывает это до момента выхода программы из контекста приложения. По крайней мере, если сразу после closeDocument(...) проверить файл текущей базы данных:
    acdbHostApplicationServices()
    ->workingDatabase()
    ->getFilename(    pszCurFileName );
то выясняется (по крайней мере у меня), что это файл уже закрытого документа.

Приходится до открытия файла сохранять указатель на активный документ acDocManager->mdiActiveDocument(); и после закрытия файла делать вызов
ISOK(    acDocManager->activateDocument    ( m_pOldActiveDoc )        );

Ну да ладно, проблема не в этом...
Самая большая "засада" в том, что если я закрываю несколько документов, то после выхода из контекста приложения, AutoCAD закрывает только последний из "закрытых" документов; окна остальных документов остаются "висеть".

Сейчас пробую сделать так: не закрывать документы сразу, а сохранить указатели на эти документы до момента выхода из контекста приложения, и только после выхода их закрыть.

Что я делаю не так? Есть ли решение моей проблемы?

P.S. Открываются новые документы с помощью
ISOK(    acDocManager->appContextOpenDocument( pszFileName )        );

Re: Снова проблемы с открытием-закрытием документов:(

Не совсем понятно с чем связана Ваша большая ?засада?. Я проверил у себя работу этих функций, все документы нормально закрываются из ApplicationContext-а. Небольшая проблема возникает с закрытием текущего документа; Автокад  ругаться на то, что он  is still active. Поэтому лучше закрывать этот документ из  document context-а, а все остальные из ApplicationContext-а.
?.
void closeAllDocExCur(void* )
{
    AcApDocumentIterator *Iter = acDocManager->newAcApDocumentIterator();
    while(!Iter->done())
    {
        if (Iter->document()!=acDocManager->curDocument())
        {
            acDocManager->closeDocument(Iter->document());
        }
        Iter->step();
    }
    delete Iter;
}

void closeCurDoc()
{
    acDocManager->executeInApplicationContext(closeAllDocExCur,NULL);
    acDocManager->closeDocument(acDocManager->curDocument());
}
???