使编辑控件透明 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_COMMAND
s EN_CHANGE
或 WM_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)));
结果:
这是我的代码的相关部分:
case WM_CTLCOLORBTN:
case WM_CTLCOLOREDIT:
case WM_CTLCOLORSTATIC:
SetBkMode(HDC(wParam),TRANSPARENT);
return LRESULT(HBRUSH(GetStockObject(NULL_BRUSH)));
它使所有控件的背景透明,包括编辑控件。但是当输入一些文本时,它会覆盖自己并且看起来很乱。我应该如何重置可见区域并重新绘制当前情况?我应该处理 WM_COMMAND
s EN_CHANGE
或 WM_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)));
结果: