Edit控件的重绘

YAN346930350 2014-07-31 09:58:32
Edit重绘之后,鼠标点击之后,没有重绘前的内容又会出现,OnPaint函数中的代码
CPaintDC dc(this); // device context for painting
//创建字体
LOGFONT log;
GetObject(::GetStockObject(DEFAULT_GUI_FONT),sizeof(log),&log);
log.lfHeight = 25; //改
log.lfWidth = 20; //改
log.lfCharSet = GB2312_CHARSET;
log.lfItalic = false;//斜体
log.lfWeight = FW_BOLD;
lstrcpy(log.lfFaceName, _T("宋体"));
font.CreateFontIndirect(&log);

//设置字体
dc.SelectObject(&font);
font.DeleteObject();

//设置背景色
CRect rect;
GetClientRect(&rect);
mybrush.CreateSolidBrush(RGB(0,0,255));
dc.FillRect(&rect,&mybrush); //用FillRect成员函数利用笔刷填充指定区域
mybrush.DeleteObject();

//设置字体垂直居中
TCHAR buffer[MAX_PATH];
ZeroMemory(buffer,MAX_PATH );
::GetWindowText(this->m_hWnd,buffer,MAX_PATH);

dc.SetBkMode(TRANSPARENT);
dc.DrawText(buffer,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);

原来的内容是这样的:
重绘之后是这样的:
单击之后又变成原来的样子,但是最大化,最小化重新刷新之后又好了,请问这是为什么
...全文
347 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2014-09-01
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
邓学彬 2014-07-31
  • 打赏
  • 举报
回复
鼠标消息里Invalidate一下
ohyeszq 2014-07-31
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
这是 windows 的问题, 就是 不是所有的 ,绘制 都 在 Onpaint 中 进行的, 有些消息 默认 自己会 绘制, 不 经过 OnPaint 要 经过 OnPaint 必须 Invalidate。
貌似意思是在 edit点击时加个 Invalidate 控件区域。
schlafenhamster 2014-07-31
  • 打赏
  • 举报
回复
这是 windows 的问题, 就是 不是所有的 ,绘制 都 在 Onpaint 中 进行的, 有些消息 默认 自己会 绘制, 不 经过 OnPaint 要 经过 OnPaint 必须 Invalidate。
  • 打赏
  • 举报
回复
编辑框自绘 请在 OnNcPaint 和CTLCOLOR执行

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧