【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

只今、VisualStudio2005のVC++でWin32 APIを使ってWindowsアプリケーション製作の練習をしています。今、ドラゴンクエストIのようなゲームを作りたいと思っており、画面に画像を表示し、キーボードの十字キーで操作できるようにしていますが、ここまでやっていて一つ不思議に思ったことがあります。それは、画像の読み込みや表示・キーボードの入力などすべてをウィンドウプロシージャ内にコーディングしています。WinMain()関数内には、ウィンドウの登録・生成・表示という当たり前の処理しかありません。これから、戦闘の処理なども加えていきますが、それを考えてもWM_PAINTやWM_KEYDOWNなどのメッセージ内で事足りるような気がします。アプリの製作の経験はほとんどない初心者なので、C言語みたいにMain()関数内にほとんど処理を記述しないのが不安に思います。自分の書き方は間違っているのかどうなのか、何か参考になる意見をいただけないでしょうか?どうかよろしくお願い致します。

A 回答 (2件)

こんにちわ。



間違ってないです。そんなもんです。
というよりも、そういう設計のAPIですから、GUIを持つプログラムは大抵そうなります。
ただ、ウインドウプロシージャなどをライブラリに隠蔽して見えなくするということも設計次第では出来るので、そういったプログラムと比較すると、ぱっと見では、あなたのプログラムとはつくりが大分違うように見えたりするかもしれません。
でも本質的には、イベント毎に処理を行うという意味では一緒で、ソースを追えば似たようなもんだと分かると思います。そして、やっぱりmainも小さくなる傾向にあると思います。

ただ、、、そうではないやり方も出来るみたいです。例えば、メッセージループの中に記述を埋め込むとかです。(何かの本で見ました)
その場合には、main関数にも記述が増えてくると思います。
    • good
    • 0
この回答へのお礼

おぉ、そう言っていただけると不安が解消されます。
Win32 APIのようなプログラムは大抵そうなるのですね。
いやー、おかげで自信がつきました。これで心おきなくアプリ製作に集中できます。
ありがとうございました!

お礼日時:2008/12/17 07:08

それでいいんですが、プログラムが長くなってすごく理解不可能になってませんか?


処理をひとまとめにして、関数化したり
クラス化してオブジェクトとしてみたり
プログラムが大きくなったときに理解しやすくなるようなさまざまな技術があります
    • good
    • 0
この回答へのお礼

なるほど!関数化するというのはいいですね。なにぶん初級者なもので、気づけませんでした…。これは参考になりました。ありがとうございます。

お礼日時:2008/12/17 07:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報