您的位置:首页 > 其它

阅读>心得(1)

2007-01-19 00:02 190 查看
昨天看到第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函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: