SetWindowRgnを使うとウィンドウの指定のリージョンの部分のみ表示するようになる。
つまりウィンドウを非矩形なリージョンの形にできるということ。
SetWindowRgn function (winuser.h) - Win32 apps | Microsoft Docs
SetWindowRgnに指定したリージョンはシステム管理となるため、解放してはいけない。
とはいえ個別のリージョンは解放したいので、空のリージョンを作ってそれに結合リージョンをコピーし、それをウィンドウにセットという形にする。
WM_CREATEで、
hRgn1とNULLを指定して、RGN_COPYでCombineRgnすると、hRgn3にリージョンがコピーされる。
hRgn1とhRgn2は解放可能だが、hRgn3は解放してはいけない。
この状態でhRgn3でSetWindowRgn。
WM_PAINTで、
ウィンドウに画像を描画すると、
非矩形ウィンドウが宙に浮いている。
Sample/winapi/SetWindowRgn/SetWindowRgn/src/SetWindowRgn at master · bg1bgst333/Sample · GitHub