For a transparent background you set Opaque off and the background color clear. This is the method I use. If calling from the Windows open event just pass in self. If calling at some later time also pass in true and it'll fix the shadows. Then for a custom background draw in the Windows paint event and you can even use semi-transparent colors and it's see through with corresponding shadow.
Shared Sub makeWindowTransparent(aWindow As Window, forceDisplay As boolean = false)
if aWindow = nil then return
const CocoaLib = "Cocoa.framework"
soft declare function NSClassFromString lib CocoaLib (aClassName as CFStringRef) as Ptr
soft declare function colorMaker lib CocoaLib selector "colorWithCalibratedWhite:alpha:" (NSColorClass As Ptr, white As Single, alpha As Single) As Ptr
soft declare sub setBGColor lib CocoaLib selector "setBackgroundColor:" (NSWindow As Ptr, backgroundColor As Ptr)
soft declare sub setOpaque lib CocoaLib selector "setOpaque:" (NSWindow As Ptr, flag As Byte)
dim w As Ptr = Ptr(aWindow.Handle)
setOpaque(w, 0) //0 = off, 1 = on
setBGColor(w, colorMaker(NSClassFromString("NSColor"), 1, 0))
if forceDisplay then
soft declare sub invalidateShadow lib CocoaLib selector "invalidateShadow" (NSWindow As Ptr)
soft declare sub disp lib "AppKit" selector "display" (windRef As Ptr)