用drawtext动态显示刚开始不刷新,过几秒后才刷新,用tm结构初始化矩形区域

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hDc;
PAINTSTRUCT PtStr;
HBRUSH hBrush;
HPEN hPen;
HFONT h_big;
LPCTSTR str;
SIZE size;
TEXTMETRIC tm;
static RECT rect ;
LPCWSTR lps_1 = L"今天的天气不错";
LPCWSTR lps_2 = L"Have a good day please!";
LPCWSTR lps_3 = L"please!";
switch (message)
{
case WM_CREATE:
SetTimer(hWnd, 9999, 50, NULL);
break;

case WM_LBUTTONDOWN:
    MessageBox(hWnd, L"mouse clicked", L"肖", 0);
    break;
case WM_PAINT:
    hDc = BeginPaint(hWnd, &PtStr);
    rect.right += 2;
    hPen = (HPEN)GetStockObject(BLACK_PEN);
    SelectObject(hDc, hPen);
    TextOut(hDc, 0, 0, lps_1, _tcslen(lps_1));
    h_big = CreateFont(48, 0, 0, 0, FW_NORMAL, 0, 0, 0,
        GB2312_CHARSET,
        OUT_DEFAULT_PRECIS,
        CLIP_DEFAULT_PRECIS,
        DEFAULT_QUALITY,
        DEFAULT_PITCH | FF_DONTCARE,
        L"楷体_GB2312");
    SelectObject(hDc, h_big);
    SetBkColor(hDc, RGB(150, 50, 50));
    SetTextColor(hDc, RGB(0, 100, 100));
    TextOut(hDc, 0, 200, lps_2, _tcslen(lps_2));
    GetTextMetrics(hDc, &tm);
    GetTextExtentPoint32(hDc, lps_2,_tcslen(lps_2),&size);
    rect.top = 200;
    rect.left=tm.tmAveCharWidth*16;
    
    rect.bottom = rect.top + 48;
    SetBkColor(hDc, RGB(50, 150, 50));
    SetTextColor(hDc, RGB(200, 50, 200));
    DrawText(hDc, lps_3, _tcslen(lps_3), &rect, DT_LEFT);
    if (rect.right > rect.left+tm.tmAveCharWidth*7) rect.right = rect.left;
    DeleteObject(hPen);
    DeleteObject(h_big);
    EndPaint(hWnd, &PtStr);
    break;

case WM_CLOSE:
    if (IDYES == MessageBox(hWnd, L"是否真的结束?", L"肖", MB_YESNO))
    {
        DestroyWindow(hWnd);
    }
    break;
case WM_TIMER:
    if (wParam == 9999)
        InvalidateRect(hWnd, NULL, true);
    break;
case WM_DESTROY:
    PostQuitMessage(0);
    break;
default:
    return DefWindowProc(hWnd, message, wParam, lParam);
    break;
}
return 0;

}

检查rect的值什么时候有效的