Всплывающее сообщение отображается функцией обратного вызова TATLModule::AutomationTerminateProc()
в файле atlmod.h.Он регистрируется обратным вызовом TATLModule::InitATLServer()
, который вызывает функцию AddTerminateProc()
VCL.Когда вызывается метод TForm::Close()
, он вызывает CallTerminationProcs()
, чтобы посмотреть, можно ли безопасно закрыть приложение, а затем вызывает TATLModule::AutomationTerminateProc()
.
. Конструктор TATLModule
вызывает InitATLServer()
, если вы не укажетеВаш собственный обратный вызов инициализации.Поэтому, чтобы избежать появления всплывающего окна, просто передайте пользовательский обратный вызов в главном файле .cpp вашего проекта, который делает все, что обычно TATLModule::InitATLServer()
делает, кроме вызова AddTerminateProc()
, например:
void __fastcall MyInitATLServer();
TComModule _ProjectModule(&MyInitATLServer); // <-- here
TComModule &_Module = _ProjectModule;
BEGIN_OBJECT_MAP(ObjectMap)
...
END_OBJECT_MAP()
void __fastcall MyInitATLServer()
{
if (TComModule::SaveInitProc)
TComModule::SaveInitProc();
_Module.Init(ObjectMap, Sysinit::HInstance);
_Module.m_ThreadID = ::GetCurrentThreadId();
_Module.m_bAutomationServer = true;
_Module.DoFileAndObjectRegistration();
// AddTerminationProc(AutomationTerminationProc); // <-- no more popup!
}