使编辑控件透明化WinAPIwin32

问题描述

这是我代码的相关部分:

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

它使所有控件(包括编辑控件)的背景透明。但是,当键入某些文本时,它将覆盖自身并显得凌乱。如何重置可见区域并根据当前情况重绘?我应该在WM_COMMAND的{​​{1}}或EN_CHANGE内处理其他内容吗?

这是当前外观:

解决方法

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

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)));

结果:
enter image description here