いつもお世話になっております。 

SetWindowRgnの動作が不明なので、質問させていただきます。 

ウインドウのリージョンを更新して 
ウインドウの形状をアニメーションをさせたいと思いました。 

HRGN hRgn[16]; 

for (int i=0;i<16;i++) 
    hRgn[i] = CreateRgn();//リージョンの作成 

/*メッセージループ*/
while(TRUE){ 
    : 
    : 
    i = (i+1)&15; 
    SetWindowRgn(hWnd,hRgn[i],TRUE); 
    InvalidateRect(hWnd,&rect,TRUE); 


最初の一周(i=0~15)までは問題無く更新されるのですが、 
次に同じリージョンを設定しようとした場合更新されません。 

SetWindowRgnは2度と同じリージョンを設定できないのでしょうか。 
また他に異なるアプローチはあるでしょうか。