所以我得到了一个 c++/cli
表格应用程序有一个复选框(调试),其名称为 checkBox3
在我的应用程序内。
这是复选框的代码
private: System::Void checkBox3_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {
//set the debug flag
g.debug = !g.debug;
HWND allocatedConsole = NULL;
if (this->checkBox3->Checked == true)
{
AllocConsole();
freopen("CONOUT$", "w", stdout);//use cout
}
else {
allocatedConsole = GetConsoleWindow();
std::cout << allocatedConsole << std::endl;
PostMessageA(allocatedConsole, WM_CLOSE, 0, 0);
FreeConsole();
}
}
每当我点击复选框时,它就会分配一个控制台 然后当我取消复选框时,它就会存储控制台的H窗口,使用的是: GetConsoleWindow
内功 allocatedConsole
然后试图关闭 allocatedConsole
远程使用 PostMessageA
功能与 WM_CLOSE
信息,最后它释放了它。
然而,当我取消选中复选框时,它释放了控制台,但根本没有关闭它。.
先谢谢你了。
尝试发送一个 WM_SYSCOMMAND
捎带 wParam
= SC_CLOSE
. 这更接近于从系统菜单中选择 "关闭"。