- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am trying to handle various control signals when my application is running calculations. For historical reasons, I am not calling SetConsoleCtrlHandler directly from the Fortran code, but I have a DLL written in C++ and I call a function from this DLL.
This is what I have in Fortran:
To confirm this unwanted functionality, I wrote a small application based on IanH's code from this thread, and the behavior is the same - the console window shows the message, but is closed immediately.
Could it be that my Windows 7 are 64-bit? Or is there any other reason why the console window does not wait for user's input after the user closes it?
This is what I have in Fortran:
[fxfortran] integer*4 function InitSignalProcessing ( ) !dec$ attributes stdcall, dllimport, decorate, alias: "InitSignalProcessing" :: InitSignalProcessing end function ... status = InitSignalProcessing ( )[/fxfortran]C++ code is:
[cpp]__declspec(dllexport) int __stdcall InitSignalProcessing( void ) { return (int) SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, TRUE ); } BOOL CtrlHandler( DWORD fdwCtrlType ) { BOOL ret = TRUE; switch ( fdwCtrlType ) { case CTRL_C_EVENT: printf( "\n\n Stopping due to Ctrl-C.\n" ); ret = TRUE; case CTRL_CLOSE_EVENT: printf( "\n\n Stopping due to closing the window.\n" ); ret = TRUE; case CTRL_BREAK_EVENT: printf( "\n\n Stopping due to Ctrl-Break.\n" ); ret = TRUE; // Pass other signals to the next handler - ret = FALSE case CTRL_LOGOFF_EVENT: printf( "\n\n Stopping due to logoff.\n" ); ret = FALSE; case CTRL_SHUTDOWN_EVENT: printf( "\n\n Stopping due to system shutdown.\n" ); ret = FALSE; default: printf( "\n\n Stopping due to unknown event.\n" ); ret = FALSE; } return ret; }[/cpp]I am particularly interested in CTRL_CLOSE_EVENT. After I click the close button of my application's console window, I get the message "Stopping due to closing the window", see the code above, and I am offered to end the task; however, this works only in Windows XP. In Windows 7, the console window is immediately closed, so it loooks like the corresponding signal is not handled.
To confirm this unwanted functionality, I wrote a small application based on IanH's code from this thread, and the behavior is the same - the console window shows the message, but is closed immediately.
Could it be that my Windows 7 are 64-bit? Or is there any other reason why the console window does not wait for user's input after the user closes it?
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't have an answer for you, but you might read through this thread which is trying to do something similar.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page