WindowsSDK 備忘録 その八

ソースコード[v06e.lzh]では、CImageWindow::WndProc(); のWM_PAINT: にimgwnd->WmPaint(); と指定し、子クラスのWm_Paint(); を実行する様に変更しました。画面上にも子クラスのメンバで書いてますとでるようにしました。

また前回のstaticなテスト用変数をCImageWindowクラスのstaticなメンバ変数のMapコンテナと置き換えました。このMapコンテナに、ウィンドウズハンドル値をキーにして、カレントのマスコットクラスのオブジェクトを登録してします。マスコットが一つ(小窓がひとつ)だけならMapコンテナはいらないですが、スクリプトの読み取りと実行まで再現する場合は、外せないものなのでここで組み込んでみました。

imgwnd->WmPaint(); のimgwnd の内容が変動するところが要所になりますよね。

これで一区切りになります。ここまではコードの量も少なくて構造も把握しやすいんではと思います。

この先の分岐としては、取りあえずビットマップ画像を画面表示したいだけなのなら、教本の様にCMascotクラスに画像を管理するクラスを追加して拡張すれば実行可能でしょう。これは比較的労力が少なく実行できそうです。

もう一つの分岐としては、スクリプトファイルを読み込んで解析しコマンドを実行するルートになります。教本では画面表示の実装が終わると、字句解析・構文解析へと解説を進めています。このルートに進むと定型的な処理とはいえ構文解析のところがやっぱりかなりややこしいので大変だと思います。削りに削ってマスコット宣言の処理だけに絞って抽出したものでさえ、補助関数を行ったり来たりしながらメインの関数をじりじり進んでいくような感じになります。

ソースコード[v06e.lzh]

コメント

タイトルとURLをコピーしました