Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ PostMessage无法在winform应用程序中使用分配的控制台_C++_Windows_C++ Cli - Fatal编程技术网

C++ PostMessage无法在winform应用程序中使用分配的控制台

C++ PostMessage无法在winform应用程序中使用分配的控制台,c++,windows,c++-cli,C++,Windows,C++ Cli,因此,我得到了一个c++/cli表单应用程序,在我的应用程序中有一个名为checkBox3的中文checkboxdebug: 这是复选框的代码: private:System::Void checkBox3\u CheckedChangedSystem::对象^sender,System::EventArgs^e{ //设置调试标志 g、 调试=!g.debug; HWND allocatedConsole=NULL; 如果此->复选框3->选中==true { allocsole; freop

因此,我得到了一个c++/cli表单应用程序,在我的应用程序中有一个名为checkBox3的中文checkboxdebug:

这是复选框的代码:

private:System::Void checkBox3\u CheckedChangedSystem::对象^sender,System::EventArgs^e{ //设置调试标志 g、 调试=!g.debug; HWND allocatedConsole=NULL; 如果此->复选框3->选中==true { allocsole; freopenCONOUT$,w,stdout;//使用cout } 否则{ allocatedConsole=GetConsoleWindow;
std::cout尝试发送wParam=SC\u CLOSE的WM\u SYSCOMMAND消息。这更接近于模拟从系统菜单中选择“CLOSE”。

尝试发送wParam=SC\u CLOSE的WM\u SYSCOMMAND消息。这更接近于模拟从系统菜单中选择“CLOSE”。

但请注意竞争条件。当控制台关闭时,它会发送一个CTRL\u CLOSE_事件通过会话服务器发送到所有连接的进程,对于此事件,服务器在强制终止进程之前给进程5秒的退出时间。为了避免这种情况,程序需要在将关闭消息发布到控制台窗口之前通过FreeConsole从控制台分离。但请注意竞争条件。当控制台e关闭时,它会通过会话服务器向所有连接的进程发送一个CTRL_CLOSE_事件,对于该事件,服务器会给进程5秒钟的退出时间,然后强制终止进程。为了避免出现这种情况,在将关闭消息发布到控制台窗口之前,程序需要通过FreeConsole从控制台分离。