某些时候 我们 在 控制台 写demo 很方便,但有时候要 在控制台结束时做些事情
比如前两天在 学习x264 保存mp4,数据是写进去了,可结束后 mp4文件打不开,播放不了,
最后 找资料 说 mp4v2 要最后执行close,否则文件损坏,于是 尝试 在控制台结束时 触发 close
尼玛,终于能播放了。
bool Ctrlhandler( DWORD fdwctrltype )
{switch( fdwctrltype ){// handle the ctrl-c signal.case CTRL_C_EVENT:printf( "ctrl-c event\n\n" );return( true );// ctrl-close: confirm that the user wants to exit.case CTRL_CLOSE_EVENT://控制台结束时 要做的事情Close_Exit = true ;Sleep(200);printf( "ctrl-close event\n\n" );return( true );// pass other signals to the next handler.case CTRL_BREAK_EVENT:Close_Exit = true ;Sleep(200);printf( "ctrl-break event\n\n" );return false;case CTRL_LOGOFF_EVENT:Close_Exit = true ;Sleep(200);printf( "ctrl-logoff event\n\n" );return false;case CTRL_SHUTDOWN_EVENT:Close_Exit = true ;Sleep(200);printf( "ctrl-shutdown event\n\n" );return false;default:return false;}
}//在函数中调用
int main(int argc, char* argv[])
{
//开启监听
if(SetConsoleCtrlHandler( (PHANDLER_ROUTINE)Ctrlhandler, true ))
{
//写正常代码}}