MFC对话框添加位图背景后编辑框输入文字会重影
我的透明代码HBRUSHCBlogDlg::OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor){HBRUSHhbr=CDialog::...
我的透明代码
HBRUSH CBlogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch(pWnd->GetDlgCtrlID())
{
default:
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
break;
}
return hbr;
} 展开
HBRUSH CBlogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch(pWnd->GetDlgCtrlID())
{
default:
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
break;
}
return hbr;
} 展开
1个回答
展开全部
你编辑框左对齐就不会在输入的时候重影了。
重影的原因是,当你做了透明之后,编辑框的变化并不能产生背景重绘,这样输入产生变化的时候(因为中央对齐,输入的时候会产生位置变化),原有的输入就不能被”刷新“掉,因此就造成了现有的和旧有的都同时出现了。
解决办法就是在输入或者变化的时候,触发一下对话框的局部重绘(重绘区域为编辑框所在区域)即可。但实际上,因为你center对齐,任何一个变化都会需要局部重绘,而不是仅仅是内容被替换的时候。
尝试,在编辑框的OnChange消息里面做对话框背景的局部重绘吧,估计效果可能还会有些瑕疵,但总体应该可以实现。
重影的原因是,当你做了透明之后,编辑框的变化并不能产生背景重绘,这样输入产生变化的时候(因为中央对齐,输入的时候会产生位置变化),原有的输入就不能被”刷新“掉,因此就造成了现有的和旧有的都同时出现了。
解决办法就是在输入或者变化的时候,触发一下对话框的局部重绘(重绘区域为编辑框所在区域)即可。但实际上,因为你center对齐,任何一个变化都会需要局部重绘,而不是仅仅是内容被替换的时候。
尝试,在编辑框的OnChange消息里面做对话框背景的局部重绘吧,估计效果可能还会有些瑕疵,但总体应该可以实现。
追问
谢谢,能告诉下联系方式吗?想请教下相关的问题,百度不方便
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询