为什么我自绘的edit控件一开始就会得到焦点?
如上图所示,我的鼠标都没有移动到edit控件上,就是一进入到这个界面的时候,edit控件就获取了焦点这事为什么啊?我用CEdit类的派生类CMyEdit来重绘,代码如下:
因为CEdit::OnPaint();和CPaintDC dc(this);都会调用BeginPaint
BeginPaint 会自动设置剪切区域(在无效区域以外的区域绘制不会有任何效果),并使无效区域成为有效区域
[解决办法]
据此,可以分析一下CEdit::OnPaint();先后顺序的不同产生的不同结果:
如果CEdit::OnPaint();先执行,那么,CPaintDC dc(this);执行时已没有无效区域,相当于dc的所有区域都是剪切区域(在剪切区域绘制不会有任何效果)
反之,如果CPaintDC dc(this);先执行, CEdit::OnPaint();也不会绘制出任何东西出来
画边框的时候,你是用GetWindowDC获取的DC,剪切区域不一样