是否有类似的事件;“关闭控制台”;在C++;? 是否有类似于C“Falm Cut关闭”的事件,但C++中作为控制台关闭,在控制台关闭之前,我可以执行一些代码?(在我的例子中,我希望在控制台完全关闭之前使用用户的输入创建一个目录)。
如果您想关闭控制台,那么可以使用是否有类似的事件;“关闭控制台”;在C++;? 是否有类似于C“Falm Cut关闭”的事件,但C++中作为控制台关闭,在控制台关闭之前,我可以执行一些代码?(在我的例子中,我希望在控制台完全关闭之前使用用户的输入创建一个目录)。,c++,windows,console,C++,Windows,Console,如果您想关闭控制台,那么可以使用FreeConsole() 如果您还想再次打开控制台,可以使用关闭控制台有效地终止应用程序。在windows中,我不确定是否能够捕获此事件,但在linux中,您可以捕获KILL信号?我猜您希望在单击[X]时获取事件 BOOL WINAPI HandlerRoutine( DWORD eventCode ) { switch( eventCode ) { case CTRL_CLOSE_EVENT: // do your thing
FreeConsole()代码>
如果您还想再次打开控制台,可以使用关闭控制台有效地终止应用程序。在windows中,我不确定是否能够捕获此事件,但在linux中,您可以捕获KILL信号?我猜您希望在单击[X]时获取事件
BOOL WINAPI HandlerRoutine( DWORD eventCode )
{
switch( eventCode )
{
case CTRL_CLOSE_EVENT:
// do your thing
return FALSE;
break;
}
return TRUE;
}
这就是你要找的吗
您还需要启用处理程序:
int main()
{
SetConsoleCtrlHandler( HandlerRoutine , TRUE );
getch();
}
“我”不想关闭控制台,这取决于用户,如果他决定关闭控制台,那么他输入的内容将写入同一文件夹中的文件中。所以,我需要一种方法来找出他什么时候关闭了表单,并在表单关闭之前写下文件。哦,对不起,误解了你的问题!正是我要找的。然而,我对WinAPI还很陌生,我想知道,我该如何在我的程序中准确地调用这个函数?因此,我必须在你说的字段中“做我的事情(创建目录)”,//做你的事情
,我只是在我的主程序中调用它SetConsoleCtrlHandler()代码>并且它将不断检查用户是否单击了[X],对吗?处理程序将捕获关闭事件并执行其中指定的代码,然后完全退出程序。简言之,是的。我从未意识到控制台有这样的挂钩+1值得注意的是,在处理程序中响应CTRL\u CLOSE\u事件有一个时间限制,如果超过这个时间限制,Windows将终止您的应用程序(您有大约5秒的IIRC)。此外,处理程序将从与主程序不同的线程调用!