2009-07-22 106 views
1

我目前正在开发一款游戏,并且想要添加一个外部控制台(现在它已经内置到主游戏窗口中)。从代码创建另一个窗口?

我真的想是创建一个新的窗口,作为与也许在底部的文本框中添加新命令到它的控制台,并在其顶部输出信息的较大的文本框中。

我使用DirectX的,而不是所有知道我怎么会去这样做。我从C++创建一个新窗口吗?如果是这样的话,我会怎样去处理这些给定的要求(我真的更喜欢我创建的窗口不是iN CLR)。主应用程序窗口和控制台窗口之间的通信会有问题吗?我不介意使用实际的窗体对象来实现这一点(事实上,我更喜欢这种方式,因为它会给复制+粘贴优势等)。

我想这是最灵活的,也许这样我就可以添加文字五彩之类到控制台窗口中的选项。

赞赏这个=)

回答

1

在很大程度上取决于你的编译器。如果您使用Visual Studio(非快速),则可以通过创建对话框模板来轻松完成此操作。然后你可以使用CreateDialogIndirect来创建这个东西。你可能想要在对话框中使用一个RichEdit控件(RichEdit控件不是一个简单的控件,所以如果你只想纯文本,你会发现它更容易使用标准的Edit控件)你在之后。然后,您可以使用SendDlgItemMessage将消息传递给丰富的编辑,以将文本放入RichEdit控件中。

如果您不能使用对话框模板构建器,它将变得更加复杂。正如Tobias指出的那样,您需要使用CreateWindow(Ex)来创建对话框,然后CreateWindow里面的丰富编辑控件。但是,您应该仍然可以使用SendDlgItemMessage来填充RichEdit控件。

无论哪种方式,你将需要处理Windows消息的太多了。每次用户点击甚至将鼠标移动到窗口上时,都会看到一条Windows消息。你不必处理它们,但你需要弄清楚你需要处理什么信息,然后处理它们。诚然,使用简单的编辑控件,将文本垃圾邮件发送到编辑控件非常容易。您可以简单地通过使用SetWindowText函数(它在内部发送WM_SETTEXT消息)来设置控件的文本内容。

2

第一个建议:搜索一个库,提供你想要的。也许SDLQT

或者你自己动手完成它:CreateWindowEx是你的出发点。其余的大量阅读关于Windows编程。 Charles Petzold可能是你的朋友在这里。