阅读>心得(1)

昨天看到第6章,在刚开始看者本书的时候,总感觉这本书不太适合象我这样的入门读者,感觉作者讲的有些泛泛而谈,关于一些概念,并没有讲的很仔细.不知别人是否有这感觉.但是我已经开始阅读了,那就看一段时间再说了.

昨天看到一段代码:

void CMyDialog::OnPaint()
{
CWnd *pWnd = GetDlgItem(IDC_STATIC1);
 
 CDC *pControlDC = pWnd->GetDC();
 pWnd->Invalidate();
 pWnd->UpdateWindow();
 pControlDC->SelectStockObject(BLACK_BRUSH);
 pControlDC->Rectangle(0,0,10,10);
 pWnd->ReleaseDC(pControlDC);
}
对这段代码有些迷惑,其实还是自己对于VC的绘图机制有些迷惑,于是上csdn问了一下,还真有高手一针见血的指出问题实质,让我有点恍然大悟的感觉.

上面,是对话框的onpaint函数,这个函数是在对话框受到wm_paint消息时的处理函数 ,而在窗口创建以及重绘的时候,都会受到wm_paint消息.上面这段代码是对窗口内的一个控件进行重绘,同时不会对窗口内的其他区域重绘.这个功能的实现是通过,调用这个控件自身独有的onpaint函数来重绘的,所以首先得到控件的句柄 pWnd,然后进行invalidate实现重绘.另外上面的操作都是对控件的操作,因此,和一般对话框的onpaint函数区别就是,在各个操作前面加上了控件的一个句柄 pWnd,使得所有操作是对控件而非整个窗口.

呵呵,现在好像明白了,控件也是一个窗口,同样可以有onpaint函数

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页