Предположим, у нас есть приложение для Windows, которое взаимодействует с Excel через интерфейс COM:
int APIENTRY wWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
// Initialize COM for this thread...
CoInitialize(NULL);
<< Create Excel application >>
<< Create Workbooks collection >>
<< Create Workbook >>
<< Create worksheet >>
...
// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
<< Release pointers >>
CoUninitialize();
return (int) msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
...
switch (message)
{
<< Process message >>
}
}
Проблема
Когда пользователь закрывает Excel перед закрытием программы, я получаю сообщение об ошибке при закрытии программы, поскольку теперь указатели ссылаются на несуществующее приложение. Можно ли получить сообщение, указывающее, что программа закрыта. И как мне освободить указатели в этом случае?