阅读>心得(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函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值