У меня есть проблема, на которую я не могу найти ответ, но я готов поспорить, что она, вероятно, довольно проста для тех, кто раньше работал с такой настройкой приложений.
Я работаю с приложением, которое написано на C, но вызывает графический интерфейс TCL/TK, чтобы делать много приятных вещей на экране. Однако из-за того, как работает TCL/TK при запуске из C, как только вы передали управление, вы никогда не получите его обратно (т. е. интерпретатор TCL/TK обрабатывает выход из приложения, а не возвращается к исходному main()). функция).
Итак, в основном, есть такой код:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow){
Tk_Main(1,argv,Tcl_AppInit); // Tcl_AppInit is a function that runs at the start
// All code after this point will never, ever run
return 0; // This return never actually occurs
}
Это вызывает небольшую проблему. Я хочу иметь возможность уничтожать структуры данных, закрывать файлы, проверять утечки памяти и делать другие необходимые вещи перед выходом из программы. Однако я не могу сделать это после Tk_Main. Я должен выяснить хук в интерпретаторе TCL/TK, который запускается, когда он выключается, а затем сказать, чтобы запустить мою функцию разрыва перед выходом.
Кто-нибудь знает, как или где это сделать?