Windowsアプリからコンソールに出力するの難しい・・・
昨日mingw-w64入れてコンソールにHello Worldするだけやったが、今日はWindowを表示するのやってみた。
ググっても間違った情報とか記載されててすごいハマった・・・
ググっても間違った情報とか記載されててすごいハマった・・・
while(GetMessage(&msg,NULL,0,0)){
DispatchMessage(&msg);
}
WinMain関数で↑みたいな感じでウインドウが破棄されるまで無限ループするみたいなんだが、DispatchMessage(&msg);
}
Microsoftのページで第2引数がCreateWindowで得られるウインドウのハンドルを渡すみたいに書いてあるんだが、ここNULLじゃないとメッセージを取得する前にウインドウが消滅してウインドウが消えてもループから抜けれなくなるのね。
あと、コンパイルして実行ファイル作る際に -mwindows オプションをつけないとエクスプローラーからウインドウアプリを開く感じの場合でもコンソールが表示されちゃって、オプションつけるとコンソールは出てこないんだが、
そのままだとコマンドプロンプトから実行した場合もprintfとかで出力できない。
AttachConsoleってのでコマンドプロンプトから実行したか確認してfreopenでstdoutをプロンプトに接続することでXPなら出力できたんだが、
98やMEだとAttachConsoleが無いみたいなのと、CONOUT$も無いのかな?出力できなかった。
デバッグのときは-mwindows オプションなしでコンパイルする感じが良いのかな?
他の言語ならできる気がするけど、C言語って関数の有無で条件分岐できないんか?