SetConsoleCtrlHandler
を使用して、ウィンドウキャプションの「X」ボタンを押したときに発生するCTRL_CLOSE_EVENT
イベントのコールバックを設定します。
Ctrlキー + Cイベントが異なることに注意してください:それはCTRL_C_EVENT
だが、あなたはそれを同じ方法で処理します。Handle CTRL+C on Win32
#include <Windows.h>
BOOL onConsoleEvent(DWORD event) {
switch(event) {
case CTRL_C_EVENT:
case CTRL_CLOSE_EVENT:
// do stuff
break;
}
return TRUE;
}
int main(int argc, char* argv[]) {
if(!SetConsoleCtrlHandler(onConsoleEvent, TRUE)) {
// die
}
// do stuff
}
あなたが言うように、これは、Windows固有で、そのshouldn問題ではない。
あなたがセットアップするハンドラを(はCtrl +Cに相当)SIGINT
イベント用ポータブルsignal
機能を使用できますが、私の知る限りでは、Windowsのsignal
関数がコールバックを持っていません。イベントはXボタンに対応していますので、SetConsoleCtrlHandler
を使用する必要があります。
#include <signal.h> // use `<cstdlib>` in C++
void onSigint(int value) {
// do stuff
}
int main(int argc, char* argv[]) {
signal(SIGINT, onSigint);
// do stuff
}
出典
2016-11-11 00:22:36
Dai
私はSIGINTや他の終了信号のようなものに精通しています。これは似ていますか? – Koronakesh
@Koronakeshはい、概念的には同じですが、 'SetConsoleCtrlHandler'はより多くの機能を提供し、プラットフォーム固有です。 – Dai