我目前正在制作一款游戏并且相关地希望为它添加一个外部控制台(现在它已内置在主游戏窗口中)。
我真正想要的是创建一个新的Window作为控制台,底部可能有一个文本框,可以在其中添加新命令,顶部有一个更大的文本框,可以输出信息。
我正在使用DirectX而不是所有确定如何做到这一点。我是否从C ++创建一个新窗口?如果是这样,我将如何处理给定的要求(我真的更喜欢我创建的窗口不是iN CLR)。主应用程序窗口和控制台窗口之间的通信是否有问题?我不介意使用实际的Windows窗体对象来实现这一点(实际上我更喜欢它,因为它会给复制+粘贴优势等)。
我想要最灵活的选项,或许这样我就可以在控制台窗口中添加多色文本等。
感谢任何帮助=)
答案 0 :(得分:2)
或者你手动完成:CreateWindowEx是你的出发点。其余的是关于Windows编程的很多阅读。 Charles Petzold可能是你的朋友。
答案 1 :(得分:1)
很大程度上取决于你的编译器。如果您使用的是Visual Studio(非快速),则可以通过创建对话框模板轻松地完成此操作。然后,您可以使用CreateDialogIndirect来创建该事物。你可能想要使用嵌入在对话框中的RichEdit控件(RichEdit控件不是一个简单的控件,但是如果你只是想要纯文本,你会发现使用标准的Edit控件更容易)你在追求。然后,您可以使用SendDlgItemMessage将消息传递到富编辑,以将文本放入RichEdit控件中。
如果你不能使用对话框模板构建器,那将会复杂得多。正如Tobias所指出的那样,你需要使用CreateWindow(Ex)创建对话框,然后使用CreateWindow创建内部丰富的编辑控件。从那里你仍然可以使用SendDlgItemMessage来填充RichEdit控件。
无论哪种方式,您都需要处理大量的Windows消息。每次用户点击甚至将鼠标移到窗口上时,您都会收到一条Windows消息。您不必全部处理它们,但您需要弄清楚您需要处理哪些消息然后再处理它们。不可否认,使用简单的编辑控件可以很容易地将文本垃圾邮件发送到编辑控件。您只需使用SetWindowText函数(内部发送WM_SETTEXT消息)即可设置控件的文本内容。