ページ 11

コンソールとWindowsアプリケーションを同時に起動させる方法

Posted: 2009年9月21日(月) 06:41
by MNS
VC++2008EEを利用し、ゲームを製作しているのですが、
DXライブラリを使うに当たり、printfDxなどの関数を使い、デバッグを行うのに限界を感じはじめました。

たまに、Windowsアプリケーションと、コンソールアプリケーションを一度に起動するプログラムを見ます。
VC++2008EE+DXライブラリで同じようなことは出来ないでしょうか?

具体的にいえば、一つのプログラム内でコンソールとWindowsアプリケーションを起動し、
標準のゲームはWindowsアプリケーションで処理を行い、
デバッグ関連の処理で、出力などはコンソールアプリケーションに対し行いたいと思っています。

可能ならば、是非方法を教えて下さい。よろしくお願いします。

Re:コンソールとWindowsアプリケーションを同時に起動させる方法

Posted: 2009年9月21日(月) 09:56
by Justy

>Windowsアプリケーションと、コンソールアプリケーションを一度に起動するプログラムを見ます

 そういうプログラムは大抵、コンソールプログラムとして作って、
普通にウインドウを表示しているだけだと思いますが、
デバッグ用途としてそういうのを作るのであれば Windowsアプリケーションとして作って、
コンソールウインドウを表示する方がよさそうですね。

 まず Windowsアプリケーションとしてプロジェクトを作ります。
 続いて、http://msdn.microsoft.com/ja-jp/library/cc429163.aspxを呼び出します。
 この関数の呼び出しに成功した段階でコンソールウインドウが表示されますので、

[color=#d0d0ff" face="monospace]
freopen("CONOUT$", "w", stdout);
freopen("CONIN$", "r", stdin);
[/color]

を呼んで、標準の入出力をそのコンソールに割り当てれば普通に printf [color=sans-serif]scanf[/font] などの関数が
機能するようになります。

Re:コンソールとWindowsアプリケーションを同時に起動させる方法

Posted: 2009年9月21日(月) 10:04
by Mist
DXライブラリを使用しているならAppLogAddを使うと便利ですよ。
VCの出力ウィンドウに文字列を出力してくれます。

Re:コンソールとWindowsアプリケーションを同時に起動させる方法

Posted: 2009年9月21日(月) 11:34
by たかぎ
コンソールアプリケーションとして(デバッグ用の)プロジェクトを作って、main関数からWinMainを呼び出すというのもありです。
それなら、freopenを使わなくても普通にstd::printfやstd::coutなどが使えます。

手前味噌ですが、
http://www.kijineko.co.jp/tech/reinvwheel/20090729-1
を使えば、std::ostreamの派生クラスで出力ウィンドウへの書き込みができるようになりますので、std::coutやstd::cerrと切り替えて使うのもよいでしょう。

Re:コンソールとWindowsアプリケーションを同時に起動させる方法

Posted: 2009年9月21日(月) 12:16
by MNS
みなさん様々な回答ありがとうございます。

いろいろな方法があるようなので、
使ってみて自分に一番合うものを使用したいと思います。

どうもありがとうございました。