При замене текста в поле с классом EDIT новый текст накладывается поверх старого. C++ и WinApi

При замене текста в поле с классом EDIT новый текст накладывается поверх старого. Текст меняется при нажатии на какую либо кнопку на клавиатуре или на мышке. Перерисовка окна не помогает. Надеюсь мне кто-то подскажет в чем может быть причина.

#include "inputKeyBind.h"
#include <iostream>
#include <commctrl.h>

namespace GUI {
    InputKeyBind::InputKeyBind(HINSTANCE hInstance, HWND parentHwnd, int x, int y, int width, int height) {

        HWND hwnd = CreateWindowExW(
            0, L"EDIT",   
            NULL,        
            WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_READONLY,
            10, 10, 300, 25,
            parentHwnd, NULL, hInstance, NULL);
        SetWindowLongPtr(hwnd, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this));
        originalWndProc = (WNDPROC)SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)WindowProc);
    }
    LRESULT CALLBACK InputKeyBind::WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
        static std::string keySequence;
        InputKeyBind* keyBind = reinterpret_cast<InputKeyBind*>(GetWindowLongPtr(hwnd, GWLP_USERDATA));
        switch (msg) {
        case WM_KEYDOWN:
            if (wParam == VK_RETURN) {
                SetFocus(NULL);
                break;
            }
            SetWindowText(hwnd, "");
            InvalidateRect(hwnd, NULL, TRUE);
            UpdateWindow(hwnd);
            keySequence.clear();
            char keyName[32];
            GetKeyNameText(lParam, keyName, sizeof(keyName) / sizeof(wchar_t));
            keySequence += keyName;
            keySequence += " ";
            std::wcout << L"YES\n";
            SetWindowText(hwnd, keySequence.c_str());
            break;
        case WM_LBUTTONUP:
            SetWindowText(hwnd, "");
            InvalidateRect(hwnd, NULL, TRUE);
            UpdateWindow(hwnd);
            std::cout << "LBUTTON";
            SetWindowText(hwnd, "Нажмите клавишу");
            //SetFocus(NULL);
            break;
        }

        return CallWindowProc(keyBind->originalWndProc, hwnd, msg, wParam, lParam);
    }
}

Ответы (0 шт):