我开发了一个控制台ATL应用程序并且想要关闭?,退出?,终止?事件,以便我可以关闭日志文件并在退出时执行常规清理。干净地关闭一个ATL应用程序
如何捕获在任务管理器中以某人结束.exe结尾的'终止'事件?
编辑:
这是一个控制台应用程序,我已经把它贴在主类。你能否指出我应该在哪里以及如何使用SetConsoleCtrlHandler
?
// Override CAtlExeModuleT members
int WinMain(int nShowCmd) throw()
{
if (CAtlBaseModule::m_bInitFailed) //ctor failed somewhere
{
ATLASSERT(0);
return -1;
}
HRESULT hr = S_OK;
LPTSTR lpCmdLine = GetCommandLine(); //this line necessary for _ATL_MIN_CRT
if(ParseCommandLine(lpCmdLine, &hr))
{
if(SUCCEEDED(RegisterClassObjects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE)))
{
CComPtr<IRORCAdapterMain> pAdapter;
if(SUCCEEDED(pAdapter.CoCreateInstance(L"RORCAdapter.RORCAdapterMain")))
{
if(SUCCEEDED(pAdapter->StartAdapter()))
{
MSG msg;
while(GetMessage(&msg, 0, 0, 0))
DispatchMessage(&msg);
}
}
RevokeClassObjects();
}
}
你问题实际上是关于ATL的,而不是C++;考虑改变你的问题的标题... – 2009-01-28 11:46:54