【问题标题】:MFC console mode applicationMFC 控制台模式应用程序
【发布时间】:2012-12-21 11:25:10
【问题描述】:

我从 Visual Studio 2008 MFC 应用程序模板创建了一个 MFC 应用程序。问题是我想显示一个正在执行的控制台,而不是默认 MFC 应用程序模板创建的窗口(就像我们选择 Win32 控制台应用程序模板时显示的那样)。

谁能告诉我怎么可能!在 MFC 应用程序中显示控制台而不是窗口?

【问题讨论】:

  • 更改子系统或调用 AllocConsole
  • 你真的需要它成为 MFC 应用程序吗?如果你想要一个控制台而不是窗口,只需创建一个控制台应用程序就可以了。

标签: c++ visual-studio mfc console-application


【解决方案1】:

当您创建一个新的 Win32 控制台应用程序时,该向导有一个复选框,用于为 MFC 添加通用头文件 - 选中它。

这不是很常见,因为在控制台应用程序中没有多少 MFC 有用。您不会运行 MFC 的应用程序消息泵,所以很多事情都无法正常工作。

【讨论】:

  • 据我了解,有 MFC 类用于处理列表(例如 CList)、文件(例如 CFile)、用于处理数据库(例如 CDatabase)、互联网(CInternetSession)、注册表(你得到想法),序列化用于数据存储和检索的类,即使您正在编写 GUI 程序,将非 GUI 部分划分为可以在其他地方使用的 DLL 也是非常明智的。 --- 那么,是否有明确的指示,哪些 MFC 类依赖于窗口软件,哪些不依赖于窗口软件?即使是图像处理也不一定需要显示。
  • @user3070485 好点,虽然CList 在标准库中有更好的替代品。我不知道如何确定哪些部分在没有 GUI 的情况下可以工作,哪些不可以。
【解决方案2】:

在您的 stdafx.h(vs2019 之前)或 pch.h(vs2019)中:

#ifdef _UNICODE
#pragma comment(linker, "/entry:wWinMainCRTStartup /subsystem:console") 
#else
#pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console")
#endif

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      将项目设置从 Linker > System > SubSystem 更改为“CONSOLE”而不是“WINDOWS”。

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

      editbin.exe /SUBSYSTEM:CONSOLE YourApplicationPath.exe

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 1970-01-01
        • 2010-11-04
        相关资源
        最近更新 更多