出来ました。
// 不定形リージョンウィンドウ作成
// 通常バージョン
// pget & CreateRectRgnの組み合わせ
// 必要なものをインクルード
#include "user32.as"
#include "gdi32.as"
#include "winmm.as" // これはリージョン作成に直接関係無し
// ウィンドウ移動制御用の定数
#define global WM_NCLBUTTONDOWN $000000A1
#define global HTCAPTION 2
// モジュール記述
#module
// CreateWindowRgn p1(targetWin), p2(baseWin)
// targetWin : 不定形リージョンを適用するウィンドウID
// baseWin : 不定形リージョンを作成する絵があるウィンドウID
#deffunc CreateWindowRgn int targetWin, int baseWin
gsel baseWin
wx = ginfo_winx : wy = ginfo_winy // 画像サイズ取得
pget 0, 0 // 透明色の取得(点(0,0)の色を透明色にする)
tr = ginfo_r : tg = ginfo_g : tb = ginfo_b
CreateRectRgn 0, 0, 0, 0 // 空のリージョンを用意
tmpRgn = stat
// 変数初期化
x = 0 : y = 0 : flg = 0
repeat wy
repeat wx
// 点(X,Y)の色を取得
pget x, y
// 透明色と比較
if (wx == x + 1) | ((ginfo_r == tr) && (ginfo_g == tg) && (ginfo_b == tb)) {
if flg == 1 {
CreateRectRgn sx, y, x, y + 1 // リージョン作成
gRgn = stat
CombineRgn tmpRgn, tmpRgn, gRgn, 2 // 空っぽのリージョンと結合
DeleteObject gRgn // 作ったら消す
flg = 0 // フラグを元に戻す
}
} else {
if flg == 0 : sx = x : flg = 1
}
x++
loop
x = 0
y++
loop
gsel targetWin // ターゲットウィンドウをアクティブに
SetWindowRgn hwnd, tmpRgn, 1 // リージョン設定
DeleteObject tmpRgn // 後片付け
return
#global
// 以下動作確認プログラム
// 以下説明省略
gosub *me_time
title "Now Loading..."
buffer 2,880,128
font "MS ゴシック",128,1
boxf
color 100,100,200
mes "nennneko5787"
wx = ginfo_winx : wy = ginfo_winy
bgscr 3, wx, wy
gsel 3, -1
timeGetTime
st = stat
CreateWindowRgn 3, 2
timeGetTime
et = stat
gsel 0
title "Start... Time is " + (et - st)
gsel 3, 1
gcopy 2, 0, 0, wx, wy
redraw 0
onclick *winmove
stop
*me_time
timeBeginPeriod 1
timeEndPeriod 1
return
// ウィンドウ移動制御
*winmove
if iparam == 3 : end
if iparam : stop
if ginfo_act != 3 : stop
DefWindowProc hwnd,WM_NCLBUTTONDOWN,HTCAPTION,0
MoveWindow hwnd, ginfo_wx1, ginfo_wy1, ginfo_sizex, ginfo_sizey, 1