DreamFighterのVBA02 | ~Dream Fighter~

~Dream Fighter~

ジョジョの自作ゲームを中心に書きます

そいえば、ユーザーフォームが起動する時に走るもう一つのプログラムを忘れてた。
超大事です。

VBA解説04(UserFormAct01).jpg



それと、各種宣言文。
コレを書いておけば色々と使えるようになります。

VBA解説04(各種宣言文01).jpg


解説
UserForm_Activate
→UserFormがActivateした時に起動します。イニシャライズとは前後関係や何やらがある。
 どちらかで出来て、どちらかで出来ないとかも有ったような?
 今回は、UserFormのハンドルをとります。
 その後、画像の元データを読み込んでます。

ハンドル
→WINDOWSでは、OS上の色んな物に番号をつけて管理してます。
 で、ウィンドウにも番号があります。その番号(ハンドル)がわかればExcelでも色々できちゃうと。

ですが、ハンドルの取得方法ってのがとてもややこしくて、
ウィンドウの生成時に取得するのが手っ取り早く、間違えが少ない。
その結果できたのが上のプログラム。

概要はこんな感じ。

ウィンドウ生成時にget_handleヘUserFormのCaptionを渡す。
 →FindWindowでhwndを取得
  →GetDCでhdc(UserFormのハンドル)を取得


…細かいことは忘れました。

せっかく取得したhdcはウィンドウを閉じるまで有効なはずなので、大事にしましょう。
hdcが無いと、UserFormにBitBlt転送(絵を描く処理)ができませんので。


画像の元データを読み込んでるとこ
create_objで画像の読み込みとか、色々やってます。

画像読み込み

先ほど取得したhDCを使って、メモリデバイスコンテキストを取得してます。
その後に画像を読み込んで、画像とメモリデバイスコンテキストを括りつけ。

…だったような?