2007/01/25(木)コントロール背景透過モジューる
元ネタ
チェックボックスの背景を透過させるには
http://smile.poosan.net/perl-bin/hsp/ver3/hsp3.cgi?print+200610/06110031.txt
//////// コントロール背景透過モジューる 0.01α / 月影とも #module #uselib "gdi32.dll" #cfunc CreatePatternBrush "CreatePatternBrush" int #func DeleteObject "DeleteObject" #func SetBkMode "SetBkMode" int,int #func SetBrushOrgEx "SetBrushOrgEx" int,int,int,int #uselib "user32.dll" #func GetWindowRect "GetWindowRect" int,int #func MapWindowPoints "MapWindowPoints" int,int,int,int #deffunc UpdateBackgroundBrush if ginfo_sel >= length(hBrush) : hBrush.ginfo_sel = 0 if hBrush.ginfo_sel : DeleteObject hBrush.ginfo_sel mref bmscr,67 : hBrush.ginfo_sel = CreatePatternBrush(bmscr.7) oncmd gosub *OnCtlColor, 0x138 //WM_CTLCOLORSTATIC return *OnCtlColor oldSel = ginfo_sel : gsel ginfo_intid : dim rect,4 SetBkMode wParam, 1 // TRANSPARENT GetWindowRect lParam, varptr(rect) MapWindowPoints 0, hWnd, varptr(rect), 2 SetBrushOrgEx wParam, -rect.0, -rect.1, 0 gsel oldSel : return hBrush.ginfo_intid #global //// モジュここまで picload dir_exe + "/sample/demo/sky_bg.jpg" // 描画先ウィンドウの背景ブラシを更新する。 // 子コントロールに重なる部分の背景を書き換えたら呼ぶこと。 UpdateBackgroundBrush objsize 200,100 : pos 20,20 chkbox "チェックボックス", chk //// サンプルここまで