HRGN = CreateRectRgn(...);
SetWindowRgn(handle, HRGN, 1);

この HRGN はすぐに DeleteObject してしまっても良いのでしょうか?
MSDN には
The operating system does not make a copy of the region.
Thus, you should not make any further function calls with this region handle. In particular, do not close this region handle.
とありますが、ネットでサンプルを検索してみると削除してしまっている人が結構いますので・・・
英語に自信がないのでもしかしたら解釈が間違っているのかと・・・