问题描述
这是我代码的相关部分:
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)));