Тема: Как закрыть документ без сохранений?

Подскажите плиз, кто сталкивался
Как отучить закрываемый документ задавать вопрос о сохранении?
Нужно просто выйти ничего не сохраняя.
Все подходящие перегрузки реакторов испробовал, все равно сообщение лезет раньше. В VBA можно указать параметр функции Close, однако надо именно сделать в ARX

Re: Как закрыть документ без сохранений?

Может быть, сейчас это можно сделать и проще, но когда-то в ?Point A? рекомендовали поступать так:
You should be able to bypass AutoCAD's prompt to save drawings by using a couple
of different techniques. You can catch the AutoCAD close notification within a
beginClose() Editor Reactor notification handler, and set the DBMOD AutoCAD
variable to 0 for each open drawing. When a document is closed however, the
Save Drawing warning dialog has to be caught just prior to being displayed, at
which point we can again set the DBMOD variable(s), cancel the dialog, and
re-issue the command which was originally called to finally close the document.
This second technique requires setting a Windows CBT (Computer Based Training)
hook, which is relatively simple.
Under normal circumstances, the DBMOD variable (which is non-zero when its
database requires saving) is READ-ONLY, and cannot be modified, however there is
an undocumented (and unsupported) API you can use to change its value called
'acdbSetDbmod()', which is in acdb15.lib. Use this API with extreme caution, as
it can lead to data loss if improperly used. With this app loaded, you will
never get the opportunity to save any drawings if you close them, or exit
AutoCAD, so again, extreme care is needed when using it.

Re: Как закрыть документ без сохранений?

Спасибо за ответ, многое прояснилось, но...
самое раннее событие AcEditorReactor2::beginDocClose() срабатывает все равно уже после того как сообщение вылезло.

Re: Как закрыть документ без сохранений?

Я делаю это так:

bool gswrCloseActiveDocument()
{
    AutoCAD::IAcadApplication    *pAcad;
    AutoCAD::IAcadDocument    *pDocument;
    
    HRESULT hr = NOERROR;
    gswrAutomationGetApplication(pAcad);
    pAcad->get_ActiveDocument(&pDocument);
    pAcad->Release();
    
    hr = pDocument->Close(_variant_t(false));
    pDocument->Release();
    
    if (SUCCEEDED(hr))
        return (true);
    else
        return (false);
}

Re: Как закрыть документ без сохранений?

Спасибо, Michael
Все таки попытался попробовать использовать acdbSetDbmod()
Метод научного тыка определил, что таинственная запись в библиотеке acdb16.lib
"?acdbSetDbmod@@YAJPAVAcDbDatabase@@J@Z"
должна быть объявлена как прототип
long acdbSetDbmod(AcDbDatabase* db, long val);
Перехватить MessageBox удалось только на сообщении WM_SYSCOMMAND
И все работает ... мелочь, а приятно smile

Re: Как закрыть документ без сохранений?

gswrCloseActiveDocument()
Звать надо из аппликейшен контекста?

Re: Как закрыть документ без сохранений?

> KonstantinM
Из "документа" не пробовал.