窗口下显示和清除文字有关问题

窗口上显示和清除文字问题
我在消息处理函数中写:
C/C++ code

LRESULT CALLBACK WndProc(
                            HWND hwnd,
                            UINT message,
                            WPARAM wParam,
                            LPARAM lParam
                        )
{
    int wmId, wmEvent;
    HDC hdc;
    PAINTSTRUCT ps;
    bool flag=true;
    switch(message)
    {
    case WM_PAINT://控制显示和消除文字
        hdc=BeginPaint(hwnd,&ps);
        if(flag)
            
            TextOut(hdc,100,100,"flag=true",10);
        else
            TextOut(hdc,100,100,"flag=false",10);
        EndPaint(hwnd,&ps);
        break;
    case WM_CREATE:
        break;
    case WM_CLOSE:
        DestroyWindow(hwnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    case WM_LBUTTONDOWN:
        OnLbuttonDown(hwnd);
        break;
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // 分析菜单选择:
        switch (wmId)
        {
        case ID_DIALOGOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_INPUT), hwnd, InputDlg);
            break;
        case ID_TEXTOUT://点击菜单上的显示文字
            flag=true;
            SendMessage(hwnd,WM_PAINT,NULL,NULL);
            break;
        case ID_TEXTCLEAR://点击菜单上的清除文字
            flag=false;
            SendMessage(hwnd,WM_PAINT,NULL,NULL);
            break;
        default:
            return DefWindowProc(hwnd, message, wParam, lParam);
        }
        break;
    default:
        return DefWindowProc(hwnd,message,wParam,lParam);
    }
    return false;
}

我的目的是在窗口上显示和消除文字,但是这段代码不起作用,请问是什么问题?

------解决方案--------------------
不要直接发WM_PAINT消息,而是用InvalidateRect