使编辑控件透明 WinAPI (win32)

Making The Edit Control Transparent WinAPI (win32)

这是我的代码的相关部分:

case WM_CTLCOLORBTN:
case WM_CTLCOLOREDIT:
case WM_CTLCOLORSTATIC:
    SetBkMode(HDC(wParam),TRANSPARENT);
    return LRESULT(HBRUSH(GetStockObject(NULL_BRUSH)));

它使所有控件的背景透明,包括编辑控件。但是当输入一些文本时,它会覆盖自己并且看起来很乱。我应该如何重置可见区域并重新绘制当前情况?我应该处理 WM_COMMANDs EN_CHANGEWM_PAINT 内的东西还是其他东西?

这是目前的样子:

我意识到一旦控件被隐藏并再次显示,它就会按预期修复可见性。

case WM_COMMAND:
    if(HIWORD(wParam)==EN_CHANGE)
    {
        ShowWindow(HWND(lParam),SW_HIDE);
        ShowWindow(HWND(lParam),SW_SHOW);
        SetFocus(HWND(lParam));
    }
    break;
case WM_CTLCOLORBTN:
case WM_CTLCOLOREDIT:
case WM_CTLCOLORSTATIC:
    SetBkMode(HDC(wParam),TRANSPARENT);
    return LRESULT(HBRUSH(GetStockObject(NULL_BRUSH)));

结果: