【发布时间】:2024-05-23 10:10:02
【问题描述】:
我有一个使用 AllocConsole 打开控制台的 Windows 窗体应用程序。它工作正常,但问题是当我通过单击“X”按钮关闭控制台时,整个应用程序也会退出,但我希望只有控制台窗口应该关闭并且应用程序应该像往常一样继续。有什么办法吗?
【问题讨论】:
我有一个使用 AllocConsole 打开控制台的 Windows 窗体应用程序。它工作正常,但问题是当我通过单击“X”按钮关闭控制台时,整个应用程序也会退出,但我希望只有控制台窗口应该关闭并且应用程序应该像往常一样继续。有什么办法吗?
【问题讨论】:
有一种方法可以以编程方式隐藏您分配的窗口 - 使用 FreeConsole。
alloc'd 控制台上的 X 按钮的作用类似于 WinForm 上的 X 按钮 - 我猜它会触发 Form_Closing() 事件。
您需要该事件处理程序中的一些逻辑来决定是否实际关闭表单。一种可能性:抓住鼠标位置,看看它是否在窗体的边界框内。如果是,则认为表单的 X 已被单击,然后关闭应用程序。如果鼠标不在窗体内,则推断控制台 X 已被单击,并调用 FreeConsole。
这个我没试过。
【讨论】: