我用SetConsoleCtrlHandler函数注册了一个Console handler,用来侦听CTRL + C
这个事件,目的是用来在按下CTRL + C这个键后退出Console 程序,但是每次在调试时按下CTRL + C都会出现上述内存错误,不知为什么。而在运行状态下按CTRL + C又不会出现内存错误,但是程序也没有退出,而是死在那里,这是怎么回事呢?
这个事件,目的是用来在按下CTRL + C这个键后退出Console 程序,但是每次在调试时按下CTRL + C都会出现上述内存错误,不知为什么。而在运行状态下按CTRL + C又不会出现内存错误,但是程序也没有退出,而是死在那里,这是怎么回事呢?
解决方案 »
- 关于API dll对话框编程的问题(刷新对话框)
- 安装驱动的时候总是跳出来 继续安装 让用户点击,能否不出现这个点击,而把驱动安装上?
- 谁知道怎样随机产生0到2.0的double型浮点数?
- 如何控制复合控件里的子控件??
- 看看我的接收,谢了
- 菜鸟问题:类型转换.数据显示
- 谁有在VC中使用MSCOMM控件的例子?
- boost
- 调用CToolTipCtrl ::SetTipBkColor设置背景色成功,却不显示设置的背景色
- 调查一下使用VC++的程序员有多少
- 写了一个TT库.提供了常用的大量函数.有兴趣的朋友可以看看.
- CmonthCalCtrl 类的的GetCurSel 获取 时 分 秒 不对??
// MSDN上的源码,比对一下
#include <windows.h>
#include <stdio.h>
BOOL CtrlHandler( DWORD fdwCtrlType )
{
switch( fdwCtrlType )
{
// Handle the CTRL-C signal.
case CTRL_C_EVENT:
printf( "Ctrl-C event\n\n" );
Beep( 750, 300 );
return( TRUE );
// CTRL-CLOSE: confirm that the user wants to exit.
case CTRL_CLOSE_EVENT:
Beep( 600, 200 );
printf( "Ctrl-Close event\n\n" );
return( TRUE );
// Pass other signals to the next handler.
case CTRL_BREAK_EVENT:
Beep( 900, 200 );
printf( "Ctrl-Break event\n\n" );
return FALSE;
case CTRL_LOGOFF_EVENT:
Beep( 1000, 200 );
printf( "Ctrl-Logoff event\n\n" );
return FALSE;
case CTRL_SHUTDOWN_EVENT:
Beep( 750, 500 );
printf( "Ctrl-Shutdown event\n\n" );
return FALSE;
default:
return FALSE;
}
}
void main( void )
{
if( SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, TRUE ) )
{
printf( "\nThe Control Handler is installed.\n" );
printf( "\n -- Now try pressing Ctrl+C or Ctrl+Break, or" );
printf( "\n try logging off or closing the console...\n" );
printf( "\n(...waiting in a loop for events...)\n\n" );
while( 1 ){ }
}
else
printf( "\nERROR: Could not set control handler");
}