读书人

为什么小弟我自绘的edit控件一开始就会

发布时间: 2014-01-08 00:30:58 作者: rapoo

为什么我自绘的edit控件一开始就会得到焦点?
为什么小弟我自绘的edit控件一开始就会得到焦点
如上图所示,我的鼠标都没有移动到edit控件上,就是一进入到这个界面的时候,edit控件就获取了焦点这事为什么啊?我用CEdit类的派生类CMyEdit来重绘,代码如下:



因为CEdit::OnPaint();和CPaintDC dc(this);都会调用BeginPaint
BeginPaint 会自动设置剪切区域(在无效区域以外的区域绘制不会有任何效果),并使无效区域成为有效区域


[解决办法]
引用:
因为CEdit::OnPaint();和CPaintDC dc(this);都会调用BeginPaint


BeginPaint 会自动设置剪切区域(在无效区域以外的区域绘制不会有任何效果),并使无效区域成为有效区域


据此,可以分析一下CEdit::OnPaint();先后顺序的不同产生的不同结果:
如果CEdit::OnPaint();先执行,那么,CPaintDC dc(this);执行时已没有无效区域,相当于dc的所有区域都是剪切区域(在剪切区域绘制不会有任何效果)
反之,如果CPaintDC dc(this);先执行, CEdit::OnPaint();也不会绘制出任何东西出来


引用:
那为什么我画边框的时候,就不会出现这个问题呢?我还是没懂~~


画边框的时候,你是用GetWindowDC获取的DC,剪切区域不一样

读书人网 >VC/MFC

热点推荐