GDI+ を使わずに 黒の文字を表示させるサンプル
ID 0のウィンドウに透過させ、子ウィンドウ化させたID 1ウィンドウを使用しています。
文字を書く場合は ID 1 に書き込みます。
#uselib "dwmapi.dll"
#func defica "DwmExtendFrameIntoClientArea" int, var
#uselib "user32.dll"
#cfunc GetWindowLongA "GetWindowLongA" int,int
#func SetWindowLongA "SetWindowLongA" int,int,int
#func SetLayered "SetLayeredWindowAttributes" int,int,int,int
#func SetParent "SetParent" int,int
#define WM_MOVE 0x0003
#define WM_ACTIVATE 0x0006
margins = -1, 0, 0, 0 //-1 を指定するとウィンドウ全体
defica hwnd, margins
_hwnd=hwnd:boxf
oncmd gosub *_move ,WM_MOVE
// ID 0 の位置に合わせて ID 1 の bgscr ウィンドウ作成
_x=(ginfo(10)-ginfo(12))/2:_y=(ginfo(11)-ginfo(13))-_x
bgscr 1,320,480,0,_x+ginfo(4),_y+ginfo(5):gsel 1,2
// 背景(ID 1)を 透明化 & 子ウィンドウ化
SetWindowLongA hwnd,-8,_hwnd
SetWindowLongA hwnd,-20,GetWindowLongA(hwnd,-20)|0x00080000
SetLayered hwnd,0xFEFEFE,0,1
// 254,254,254 を透過色として利用
color 254,254,254:boxf
// 黒で書いてみる
color:font "",12,
repeat 32:mes "ほっとすーぷぷろせっさー":loop
button "END",*exit
stop
*_move
// 移動したときに ID 0 の位置に ID 1のウィンドウを移動させる
xPos=lParam&0xFFFF:yPos=(lParam>>16)&0xFFFF
gsel 0,0:__x=ginfo(4):__y=ginfo(5)
gsel 1,0:width ,,_x+__x,_y+__y
return
*exit
end