(AHK)(AutoHotkey)(そしてまた直後に更新)(下の記事の続きです)

 前回のを書き込んだ直後に そういえば MtoDIB ってあったよね・・・・ と思い出し
ファイルに書き出さずに 直接 MtoDIBに渡してみたら・・・ おっ 出来た! 笑)
ついでに 塗りつぶす色も指定出来るようにしてみました
まあ AHKから バイナリデータを書き出すのは 別のところで使えばいいか・・・・
;---------------------------------------------------------------------------------------------------------------------------------------------------------
; imgctl_NewDIB(NewWidth, NewHeight, R, G, B)     新規にDIBを作成して hDIBを返します
;---------------------------------------------------------------------------------------------------------------------------------------------------------
; 横:NewWidth 縦:NewHeight のサイズで 新規に DIBを生成します
; R G B に 輝度を設定する事で 塗りつぶす色を設定する事が出来ます
; 範囲 は 0(0x00)〜255(0xFF) の 範囲で指定してください
; 省略すると 255が 自動的にセットされます
; 「リサイズ処理の兼ね合い」か 結果が 指定した輝度から 1つ少なかったりする時があります
; ただ、全然 違う色になることは無いので 各自工夫してください 笑)
; 白(0xFF,0xFF,0xFF) や 黒(0x00,0x00,0x00) の場合は大丈夫です
;
; BMPファイルのイメージを生成して MtoDIBに渡すことで DIBを生成しています
; 生成に成功すると DIBのハンドルが、 失敗すると 0が返ってきます
Imgctl_NewDIB(NewWidth, NewHeight, R = 255, G = 255, B = 255)
{
	BinDataImage := "0x42,0x4D,0x3A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,"
	BinDataImage .= "0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x18,0x00,0x00,0x00,"
	BinDataImage .= "0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"
	BinDataImage .= "0x00,0x00,0x00,0x00,0x00,0x00"
	VarSetCapacity(buf, 58, 0x00)
	Loop Parse, BinDataImage, CSV
	{
		NumPut((A_LoopField + 0), buf, (a_index - 1), "Char")
	}
	NumPut(B, buf, 54, "Char")
	NumPut(G, buf, 55, "Char")
	NumPut(R, buf, 56, "Char")
	NumPut(0x00, buf, 57, "Char")
	If !(buf2 := Imgctl_MtoDIB(&buf, 58))
		Return 0
	If Imgctl_ResizeDIB(buf2, NewWidth, NewHeight)
	{
		Return buf2
	}Else{
		Imgctl_DeleteDIB(buf2)
		Return 0
	}
}
;---------------------------------------------------------------------------------------------------------------------------------------------------------