MFC隐藏在黑暗之中的大坑

大坑一:CDC会随着窗口状态的改变而改变

void K5::OnPaint() {
    CDC *pDC=this->GetDC();  //CDC最好设为局部变量
    ...
    this->ReleaseDC(pDC);
}

void K5::OnBtnDown(){
    CDC *pDC=this->GetDC();  //注意,在这里的pDC的值和上一个函数的值是不一样的
    ...                      //最好传参过来,这样pDC就一样了
    this->ReleaseDC(pDC);
}

 

大坑二:OnPaint消息函数会一直刷新

void K5::OnPaint(){
    CPaintDC dc(this);  //这一句话必须在OnPaint消息函数里面开头第一句,不然会一直刷新

}

 

大坑三:GDI升高之谜

CDC *pDC->m_hDC=hdc;
//最好不要直接修改CDC的成员变量,不然GDI会莫名增加两个
//如果想要修改CDC的内容,最好用Bitblt或者Stretch函数来拷贝图像过去

 

posted @ 2019-06-24 13:44  言午丶  阅读(175)  评论(0编辑  收藏  举报