是否可以在win32应用程序中嵌入命令提示符?

时间:2011-10-18 05:34:58

标签: c++ windows winapi console

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

问题:如何在我的程序中添加一个控制台窗口(如果这就是它所谓的,确实看起来像一个)以显示手头任务的详细信息正在完成?

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

enter image description here

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

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

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

要实际捕获一个未设计合作的应用程序窗口并将其放入您的应用程序将会更加棘手。但可能,就像屏幕截图和虚拟机一样可行。可能最好避免那种事情,除非真的有它的原因,但是......

答案 3 :(得分:0)

试试这个 http://www.codeguru.com/cpp/misc/misc/article.php/c277/ 链接。我认为所提供的解决方案就是您所需要的。 我多年前尝试过它并且有效。我没有在较新版本的Windows中尝试过它。