MFC控制台模式应用程序

4

我使用Visual Studio 2008 MFC应用程序模板创建了一个应用程序。问题是我希望在执行期间显示控制台而不是默认的MFC应用程序模板创建的窗口(就像我们选择Win32 Console应用程序模板时所显示的窗口)。

请问有人知道如何在MFC应用程序中显示控制台而不是窗口吗?


2
更改子系统或调用 AllocConsole。 - ta.speot.is
1
你真的需要它成为MFC应用程序吗?如果你想要一个控制台而不是窗口,只需创建一个控制台应用程序即可。 - Gorpik
4个回答

4
在你的stdafx.h(vs2019之前)或pch.h(vs2019)中:
#ifdef _UNICODE
#pragma comment(linker, "/entry:wWinMainCRTStartup /subsystem:console") 
#else
#pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console")
#endif

4
当你创建一个新的Win32控制台应用程序时,向导中会有一个复选框来添加MFC的常见头文件——请勾选它。
这并不是很常见的做法,因为在控制台应用程序中,MFC的用处并不多。你不会运行MFC的应用程序消息泵,所以很多东西都无法正常工作。

据我所了解,MFC类可用于处理各种事务, 如处理列表的类(例如CList),处理文件的类(例如CFile),处理数据库的类(例如CDatabase), 处理互联网的类(CInternetSession),处理注册表的类等。针对数据存储和检索进行序列化类操作。即使您正在编写GUI程序,将非GUI部分分割为DLL以便在其他地方使用也可能是明智的选择。那么,有没有明确的迹象表明哪些MFC类依赖于窗口软件,哪些不依赖呢?即使是图像处理也不一定需要显示。 - Ivan
@user3070485 说得好,虽然标准库中有更好的 CList 替代品。我不知道有没有办法确定哪些部分需要 GUI 支持,哪些不需要。 - Mark Ransom

0

当MFC应用程序窗口运行时,您可以将项目的子系统更改为控制台并同时运行控制台。

如果您只想要运行控制台,请创建控制台项目。


0

将项目设置从系统>子系统更改为“CONSOLE”,而不是“WINDOWS”。

如果您想在Windows应用程序中附加控制台,则可以使用Visual Studio工具中的“Editbin”实用程序。它位于\VC\bin\editbin.exe中。

editbin.exe /SUBSYSTEM:CONSOLE YourApplicationPath.exe

这将在您的Windows应用程序中附加控制台。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接