Graphics glitches in Win32 main window Skinning while updating few STATIC controls periodically.

I am in desperate need of a solution or a pointer to what may be wrong.
I am skinning an app as follows:

**In WM_CREATE**

DestroyCaption( hwnd,wWidth,wHeight );
// update window style
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(hwnd, g_ColourKey, 0, LWA_COLORKEY);

And painting the bitmap in the **WM_PAINT** message :

case WM_PAINT:
{
PAINTSTRUCT ps;

HDC hdc = BeginPaint(hwnd, &ps);

PaintWindow( hwnd, hdc, wWidth, wHeight );

EndPaint(hwnd, &ps);
}
break;
...
...


void PaintWindow( HWND hwnd, HDC hdc, int wWidth, int wHeight )
{
HDC dcSkin = CreateCompatibleDC( hdc );

SelectObject( dcSkin, hSkinBmp );
BitBlt( hdc, 0, 0, wWidth, wHeight, dcSkin, 0, 0, SRCCOPY );

DeleteDC( dcSkin );

SetTextColor( hdc, text_format.textcolor );
SetBkMode( hdc,TRANSPARENT );
HFONT hOldFont = (HFONT)SelectObject( hdc, text_format.hfont );

TextOut( hdc, text_format.x, text_format.y, text_format.data.c_str(), strlen( text_format.data.c_str() ) );

SelectObject( hdc, hOldFont );
}

Everything was working perfectly till I decided to update few **STATIC** controls' text with SetWindowText during an event which occurs in a different thread periodically, approximately once per second, the text on the STATIC controls gets updated only in every 10th iteration of this event. I am using SendMessage() to send WM_USER message to the main window which in turn updates the STATIC controls.

Now the skin of the window just goes away after a minute or so of running the app and there only remains grey rectangle, the buttons which have custom skins set with **BM_SETIMAGE** doesn't get affected by this error.

Now I am totally out of ideas on what would be going wrong. What you think I should be taking care of while doing something like this ?

**If I stop the update of the STATIC controls in the WM_USER handler, the graphic problem goes away.**