メッセージは
while( 1 )
{
 if( ::PeekMessage( &msg, NULL, 0U, 0U, PM_NOREMOVE ) )
 {
  if( ::GetMessage( &msg, NULL, 0, 0 ) <= 0 )
   return msg.wParam;

  ::TranslateMessage(&msg);
  ::DispatchMessage(&msg);
 }
}

プロシージャでは
GetClientRect( g_hWnd, &wrc );
GetClientRect( g_hTool, &trc );
wrc.top = trc.bottom;
を
case WM_TIMER:
 InvalidateRect( g_hWnd, &wrc, TRUE );
 UpdateWindow( g_hWnd );
 break;

case WM_PAINT:
 ValidateRect( g_hWnd, &wrc );
 break;
といった感じで処理しています。
たまにツールバーが出現したりして謎です。
ValidateRectの描画の更新は、すいません表現を間違えました。