× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
いわゆるDOS窓の削除方法について。
私はVC++(ちなみにExpressだ!)でゲームを作成しているが、リリースする際にDOS窓の削除が問題になった。要するに、ゲーム画面以外の画面は邪魔なのだ。出来ればデバッグモード以外は消滅していていただきたい。 旧来の方法 私はWinMainを使用した上で(こうすると元々コンソールが出ない)必要に応じてAllocConsoleでコンソールを呼び出し、FreeConsoleで解放するという策を執っていた。 旧来の方法の問題点 私はゲーム開発でLUAを使用することを考えた。これは肥大化しつづける命令文の解析に限界を感じた、私にとっての苦肉の策だ。 だが、ここで問題が生じた。 おい、『AllocConsoleで出した画面にLUAの構文が表示されない』ぞ!!!! ファック。なんてこった。これでは興ざめだ。 原因を探したが、どうにも見つからない。海外のサイトもチェックしてみたが解決できていない。世界一賢い先生であるGoogle先生に問いかけたが答えは見つからないようだ。まあ、ひょっとしたら英語以外のページならあるのかもしれないが、まあ、手間が掛かりすぎるだろう。 そもそもWinMainを使用しているユーザー自体が少数派なのでやむを得ないことなのだが……。 対策! 私が出した結論は、やむをえずWin32プロジェクトを放棄し、コンソールアプリケーションの開発に移るというものだった。 さて、ここで問題になるのはコンソールアプリケーションのコンソールの消し方だ。 そんなもんどこのサイトを見ても載っていないZE! HAHAHA! 結論。 結論から言う。 FreeConsoleで消えました。 え。意味わかんない。これ、AllocConsoleで作った画面を消す命令じゃないの? まあ、一瞬表示されるが殆ど気にならないレベル。不満なら3Dゲームとかで出てくるみたいにロード画面を全画面で表示させて消す時間を稼げばいいし。 考察 どうやら、AllocConsoleは1プロセスに一つらしいので、FreeConsoleをしても適切にコンソールを解放することができるようだ。 感想~こんなことに気がつくのに三日かけました~ ごらんの有様だよ。笑えよ、ベジータ。 ……これ、マルチプロセスプログラミングじゃどうなるんだろうね? まあやらないが。 あーあ。就活中になにやってんだか。だれか俺を助けてくれ! ちなみにAllocConsoleの説明はここを参考にした。 http://msdn.microsoft.com/ja-jp/library/cc429163.aspx PR |
| ホーム |
|