2014-01-08 34 views

回答

11

我的猜测是,你想要得到的事件点击[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(); 
} 

More Info

+0

正是我在找什么。不过,我对WinAPI相当陌生,而且我很想知道,我的程序中该如何精确调用此函数? – user2699298

+0

我的不好。编辑+链接到MSDN :) – deW1

+0

所以,我必须“做我的事情(创建目录)”在你说'//做你的事情',我只是在我的主程序'SetConsoleCtrlHandler();'它会不断地检查用户是否点击了[X],对吗? – user2699298

0

如果你想关闭控制台,那么你可以使用FreeConsole();

如果再进一步想再次打开控制台,您可以使用AllocConsole();

+0

“我”不想关闭控制台,这取决于用户,如果他决定关闭控制台,那么他输入的输入将被写入同一文件夹中的文件。所以,我需要一种方法来查明何时关闭表单并在关闭之前写入文件。 – user2699298

+0

哦,对不起,误解了你的问题呢! – Vallentin

0

的关闭控制台有效地杀死你的应用程序。在Windows中,我不确定是否有能力捕获这些信息,但在Linux中,您可以捕获KILL信号?