Windows 从代码创建另一个窗口?

Windows 从代码创建另一个窗口?,windows,com,console,directx,Windows,Com,Console,Directx,我目前正在开发一款游戏,并希望为其添加一个外部控制台(现在它内置在游戏主窗口中) 我真正想要的是创建一个新窗口作为控制台,底部可能有一个文本框向其中添加新命令,顶部有一个更大的文本框输出信息 我使用的是DirectX,但我不太确定该怎么做。我是否从C++创建了一个新窗口?如果是这样的话,我将如何在给定的条件下进行操作(我真的希望我创建的窗口不在CLR中)。主应用程序窗口和控制台窗口之间的通信会有问题吗?我不介意使用实际的windows窗体对象来实现这一点(事实上,我更喜欢这种方式,因为它可以提供

我目前正在开发一款游戏,并希望为其添加一个外部控制台(现在它内置在游戏主窗口中)

我真正想要的是创建一个新窗口作为控制台,底部可能有一个文本框向其中添加新命令,顶部有一个更大的文本框输出信息

我使用的是DirectX,但我不太确定该怎么做。我是否从C++创建了一个新窗口?如果是这样的话,我将如何在给定的条件下进行操作(我真的希望我创建的窗口不在CLR中)。主应用程序窗口和控制台窗口之间的通信会有问题吗?我不介意使用实际的windows窗体对象来实现这一点(事实上,我更喜欢这种方式,因为它可以提供复制+粘贴等优点)

我希望这个选项是最灵活的,这样我就可以在控制台窗口中添加多色文本等


感谢您在这方面的帮助。=)

第一条建议:搜索提供您所需内容的库。也许是


或者你用手去做:这是你的出发点。剩下的是大量关于Windows编程的阅读。可能是您在这里的朋友。

很大程度上取决于您的编译器。如果您使用的是VisualStudio(非express),则可以通过创建对话框模板轻松完成此操作。然后可以使用CreateDialogIndirect创建对象。您可能希望在对话框中嵌入一个RichEdit控件(RichEdit控件不是一个简单的控件…因此,如果您只想要纯文本,您会发现使用标准的编辑控件会容易得多)来实现您的目标。然后,您可以使用SendDlgItemMessage将消息传递给rich edit,以将文本放入RichEdit控件中

如果您不能使用对话框模板生成器,它将非常复杂。正如Tobias指出的,您将需要使用CreateWindow(Ex)来创建对话框,然后使用CreateWindow内部的富编辑控件。但是,从这里开始,您仍然可以使用SendDlgItemMessage来填充RichEdit控件

无论哪种方式,您都需要处理过多的windows消息。每次用户单击或甚至将鼠标移到窗口上时,您都会收到一条windows消息。您不必全部处理它们,但您需要弄清楚需要处理哪些消息,然后再处理它们。诚然,使用一个简单的编辑控件很容易向编辑控件发送垃圾邮件。只需使用SetWindowText函数(内部发送WM_SETTEXT消息)即可设置控件的文本内容