是否有类似的事件;“关闭控制台”;在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)。此外,处理程序将从与主程序不同的线程调用!