2009-07-22 6 views
1

私は現在ゲームに取り掛かり、外部コンソールを追加したいと思っています(今はゲームのメインウィンドウに組み込まれています)。コードから別のウィンドウを作成しますか?

私が本当に好きなのは、新しいコマンドを追加するための下部のテキストボックスと情報を出力する上部の大きなテキストボックスを持つコンソールとして機能する新しいウィンドウを作成することです。

私はDirectXを使用していますが、これをどうやってやっているかわかりません。 C++から新しいウィンドウを作成しますか?もしそうなら、どのように私は与えられた要望でそれをやっていくつもりですか(そして私は本当にiN CLRにならないように私が作る窓を好むでしょう)。メインのアプリケーションウィンドウとコンソールウィンドウ間の通信は問題になりますか?私は実際のウィンドウフォームオブジェクトを使用してこれを実現する気にはなりません(実際には、コピー+ペーストの利点などを与えるようにしたいと思います)。

私は最も柔軟性の高いオプションを希望します。多分、多色のテキストなどをコンソールウィンドウに追加することができます。あなたが望むものを提供していますライブラリの検索:

は)=

答えて

1

多くのものはコンパイラによって異なります。 Visual Studio(Non-Express)を使用している場合は、ダイアログテンプレートを作成することで、これを簡単に実行できます。 CreateDialogIndirectを使用してその物を作成することができます。あなたはおそらくRichEditコントロールをダイアログに埋め込んで使用したいと思うでしょう(RichEditコントロールは単純なものではありません...だから、単純なテキストが必要な場合は標準のEditコントロールを使用する方が簡単でしょう)あなたは後です。リッチエディットにSendDlgItemMessageを使用してメッセージを渡して、RichEditコントロールにテキストを配置することができます。

ダイアログテンプレートビルダーを使用できない場合は、はるかに複雑になります。 Tobiasが指摘するように、CreateWindow(Ex)を使用してダイアログを作成し、Rich EditコントロールをCreateWindowで作成する必要があります。そこから、あなたは依然としてRichEditコントロールを満たすためにSendDlgItemMessageを使用できるはずです。

どちらの方法でも、Windowsメッセージの過多を処理する必要があります。ユーザーがウィンドウ上でマウスをクリックするかマウスを移動するたびに、ウィンドウメッセージが表示されます。それらをすべて処理する必要はありませんが、処理する必要のあるメッセージを把握してから処理する必要があります。間違いなく単純な編集コントロールを使用すると、テキストを編集コントロールに迷惑をかけることは非常に簡単です。 SetWindowText関数(内部でWM_SETTEXTメッセージを送信する)を使用するだけで、コントロールのテキストコンテンツを設定できます。

2

まずアドバイスをこの上の任意の助けに感謝します。おそらくSDLまたはQTです。

または手で行う:CreateWindowExが出発点です。残りはWindowsプログラミングに関する多くの読書です。 Charles Petzoldはあなたの友人かもしれません。

関連する問題