アプリ版:「スタンプのみでお礼する」機能のリリースについて

Active Basicでプログラムを書いています。

今、簡単なゲームを作ってみようと思い、プログラムを書いているのですが、画像の座標の取得の部分で躓いてしました。

画像Aに画像Bが触れたときに『アウト』とメッセージを出す、簡単な、物を避けるゲームなのですが、グローバルで、
Dim BombRect As RECT
Dim HitoRect As RECT
を定義して、画像が重なったかどうかを判定するときに、
GetWindowRect(hBmp04,BombRect)
GetWindowRect(hBmp01,HitoRect)
で、読み込もうとしましたが、座標が格納されてくれません。
hBmp01とhBmp04には、下のようにして画像を読み込みました。

'グローバル
Dim hBmp01 As HWND
Dim hBmp02 As HWND
Dim hBmp03 As HWND
Dim hBmp04 As HWND
'ウインドウ作成時
hBmp01 = LoadImage(0,".\画像\人\普通.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE)
hBmp02 = LoadImage(0,".\画像\人\右.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE)
hBmp03 = LoadImage(0,".\画像\人\左.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE)
hBmp04 = LoadImage(0,".\画像\爆弾\ボム.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE)

もし、やり方をご存知の方がいらっしゃいましたら、すみませんが、ご教授お願いします。
また、もっと簡単な方法がありましたら、そちらも教えていただけると嬉しいです。

A 回答 (1件)

 こんばんは。



 GetWindowRect()はウィンドウから四方のサイズを取る為の物です。
 ファイルからロードして来たビットマップは、ウィンドウではないので、GetWindowRect()を使っても効果が無いのです。
 hBmp01~hBmp04は「As HWND」ではなく、「As HBITMAP」で無いといけません。

 ビットマップから直接「x、y」座標(現在居る位置の方)を取る事は出来ません。プログラム側が座標を保有していないといけません。
 又、ビットマップから「横・縦」幅を取るには以下のBITMAP構造体とGetObject()を使用すれば出来ます。

 「BITMAP構造体」
 http://msdn.microsoft.com/ja-jp/library/k1sf4cx2 …

 「windowsプログラミング・ビットマップ描画」
 http://den3.moe.hm/elope/index.php?Windows%A5%D7 …

 以下の様にしてhBmp01の「横・縦」幅を取ります。
 Dim bm As BITMAP
 GetObject(hBmp01, SizeOf(BITMAP), bm)
 With bm
   .bmWidth'横幅が入っている
   .bmHeight'縦幅が入っている
 End With
    • good
    • 0
この回答へのお礼

ハンドルにしてはいけなかったのですか。
訂正ありがとうございます。

回答ありがとうございます。
助かりました。

お礼日時:2009/01/02 21:28

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