2014-01-08 33 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信號?