忍者ブログ
  • 2024.04
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 2024.06
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/05/04 01:09 】 |
VC++においてのコンソールの削除方法について
いわゆる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
【2010/08/14 04:29 】 | CUI | コメント(0) | トラックバック()
| ホーム |