【问题标题】:Is it possible to embed a command prompt in a win32 app?是否可以在 win32 应用程序中嵌入命令提示符?
【发布时间】:2011-12-09 19:27:26
【问题描述】:

在 linux 中以及在安装软件包等时。有些安装程序有一个进度条和一个显示正在提取的文件的 dos 窗口等。我怎样才能将此窗口添加到我的 C++ Win32 程序中,以便我可以让它显示我在做什么?我在 MSDN 上找不到任何文档。

问题:我怎样才能在我的程序中添加一个控制台窗口(如果这就是它的名字,肯定看起来像一个),以显示手头任务的详细信息完成了吗?

这是我要问的窗口.. (个人信息,所以我删除了详细信息。:]

【问题讨论】:

    标签: c++ windows winapi console


    【解决方案1】:

    你不能在另一个窗口中嵌入一个真正的控制台窗口(尽管一个窗口进程可以有一个单独的控制台窗口)。虽然它看起来像控制台窗口/命令提示符,但这只是外观问题。您要做的是创建一个与控制台窗口具有相似特征的子窗口/控件,然后将控制台输出从正在运行的应用程序重定向到附加到该子窗口。有关如何在 Windows 中重定向控制台输出的更多信息,请参阅http://support.microsoft.com/kb/190351

    【讨论】:

      【解决方案2】:

      那个“dos 窗口”是一个常规的编辑控件:CreateWindow(ES_MULTILINE, EDIT, ... 但是,它的字体设置为固定宽度的字体(看起来像信使)。这是通过将WM_SETFONT 发送到编辑控件来完成的。

      【讨论】:

        【解决方案3】:

        @user995048 说“你不能在另一个窗口中嵌入一个真正的控制台窗口”。但是“不能”是一个强词!如果我愿意,我可以在一个窗口中运行整个虚拟计算机。 :) 所以人们可以相当合理地直觉,有很多方法可以按照你说的去做。

        当然,您所看到的几乎可以肯定是输出重定向到自定义小部件的情况,该小部件旨在模仿终端的简单外观。但是...如果您想将一个应用程序的窗口嵌入到另一个应用程序中,您可以查看一些可能适合的内容。协作方法存在,例如 GtkPlug:

        http://developer.gnome.org/gtk/2.24/GtkPlug.html

        要实际捕获一个非设计用于协作的应用程序的窗口并将其放入您的应用程序中会比较棘手。但有可能,就像屏幕截图和虚拟机一样。除非真的有原因,否则最好避免这种事情......

        【讨论】:

          【解决方案4】:

          试试这个 http://www.codeguru.com/cpp/misc/misc/article.php/c277/ 关联。我认为提供的解决方案正是您所需要的。 多年前我尝试过,它奏效了。不过,我还没有在较新版本的 Windows 中尝试过。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-01
            • 2011-01-11
            • 2023-03-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多