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函数来拷贝图像过去
原文地址:https://www.cnblogs.com/k5bg/p/11076588.html