MFCのダイアログ・ベースのアプリケーションを開発しています。
このプログラムでは、
1.プログラム・アイコンをクリックして、通常のウィンドウズのプログラムの様に、
メインとなるウィンドウ(本プログラムの場合はダイログボックス)に処理結果
を表示する。
2.DOS窓からコマンドラインで起動して、処理結果を起動もとのDOS窓にテキ
スト表示する。
の2つを実現しようと考えています。
そして、メインとなるCDialogクラスのInitInstance()の中で、
前述の1.の場合は dlg.DoModal();、
前述の2.の場合は printf( 処理結果 );
としたところ、2.のケースで、起動もとのDOS窓に何も表示されませんでした。
GetStdHandle、CreateFile、WriteConsoleなどのWinAPIもためしてみましたが、
上手くいきませんでした。
どなたかMFCで標準出力にテキストを表示する方法を教えて頂けないでしょうか?
宜しくお願い致します。
Nao@NSoftです。
MFCというわけではないのですが・・・
HANDLE hSrdOut = GetStdHandle(STD_OUTPUT_HANDLE);
TCHAR szWrite[] = 処理結果;
DWORD dwWritten;
if (WriteFile(hStdOut, szWrite, sizeof(szWrite), &dwWritten, NULL) != FALSE){
/* エラー処理 */
}
というような感じでできませんか?
#試してないのでできるかどうか分かりませんが。
残念ながらNGです。
理由は
「DOS窓からGUIアプリをコマンドライン起動した場合、
コマンドラインプロセッサの標準入出力ハンドルは、
継承されない」
からだそうです。