Edit控件的重绘,该怎么处理

Edit控件的重绘
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);

原来的内容是这样的:Edit控件的重绘,该怎么处理
重绘之后是这样的:Edit控件的重绘,该怎么处理
单击之后又变成原来的样子,但是最大化,最小化重新刷新之后又好了,请问这是为什么
------解决思路----------------------
这是 windows 的问题, 就是 不是所有的 ,绘制 都 在 Onpaint 中 进行的, 有些消息 默认 自己会 绘制, 不 经过 OnPaint

要 经过 OnPaint 必须 Invalidate。

------解决思路----------------------
引用:
这是 windows 的问题, 就是 不是所有的 ,绘制 都 在 Onpaint 中 进行的, 有些消息 默认 自己会 绘制, 不 经过 OnPaint

要 经过 OnPaint 必须 Invalidate。


貌似意思是在 edit点击时加个 Invalidate 控件区域。
------解决思路----------------------
鼠标消息里Invalidate一下
------解决思路----------------------
编辑框自绘  请在  OnNcPaint 和CTLCOLOR执行