ウィンドウ起動型アプリケーションのコンソール出力先


ゆーこ  2004-09-18 00:54:36  No: 54520  IP: [192.*.*.*]

はじめて投稿します。
知人の作成したアプリケーションのソースを見ながらC++を
勉強し始めた者です。

実は、そのアプリケーション(ウィンドウ起動型)の中で
   Console::Write(S"メッセージ: "); ……
というようにコンソール出力しているのですが、
exeを実行しても出力されたメッセージを見つけられません。

ウィンドウ起動型アプリケーションでのコンソール出力先は
どこになるのでしょうか?  勝手にコマンドプロンプトの
ような画面が開いて、そこに出力されるはずなのでしょうか??
この問題を解決できそうなキーワード(コンソール出力先を
指定するメソッドなど)があれば、教えていただければ幸いです。

作成者本人に質問するべきなのでしょうが、現在連絡が取れない
状況のため、こちらに書込みさせていただきました。
環境は Windows2000+visual studio.NET 2003 です。
よろしくお願い致します。

編集    削除
アポロ  2004-12-02 22:55:53  No: 54521  IP: [192.*.*.*]

参考になるかわかりませんが。
VisualC++6.0にて
メニューバーから[プロジェクト]→[設定](ダイアログ起動)→[デバック](タブ)
の順に辿り、[プログラム引数]エディットボックスに[>debug.txt]と書きます。
そしてプログラム中でprintf関数を利用すればプログラム終了時にdebug.txtというファイルが作成されそこにコンソール出力されます。

編集    削除
シャノン  2004-12-04 02:41:30  No: 54522  IP: [192.*.*.*]

ウィンドウアプリの標準出力先は NULL、つまり出力したメッセージは捨てられるという話を聞いたことがあります。
コンソール出力先をファイルにしたいのなら、ファイルを開いて SetStdHandle 関数を使えば出来ると思います。
ウィンドウアプリでコンソールウィンドウを表示させたいのなら、AllocConsole 関数が使えると思います。

編集    削除
Ban  2004-12-04 04:42:06  No: 54523  IP: [192.*.*.*]

> ウィンドウアプリの標準出力先は NULL、
# MS-DOS 時代から "NUL" という名前で予約されてますね。

# 用例:  c:\> foo.exe > NUL

# AUX(外部出力)とか CON(コンソール)とかと一緒で、
# これらの名前のファイルは今でも作成できない。
# (プログラム等で無理に作ると今度は消せなくなる...)

編集    削除
なーめ  2004-12-06 00:02:30  No: 54524  IP: [192.*.*.*]

時々 '\0' のことを NULL と書く人がいますが、
やめてもらいたいと思っています。
char * p = NULL;
と、
*p = NULL;
とは意味が違います。
通常、p = NULL; のコーディングミスで出てくる表記なのですが、
ミスパターンらしき表記が、実は
*p = '\0'; 
で正しいという、「だまし」なコードだったりします。
他人のコードをデバッグすると結構あるんですよ。

編集    削除