终于花时间把vc中透明的问题搞清楚了,也就那么回事,下面来说一下关于按钮透明的方法,也就是重载按钮类的OnEraseBkgnd的消息,该消息是在onpaint消息前发出的,主要是用来擦除窗体。下面看代码:
BOOL bb::OnEraseBkgnd(CDC* pDC)
{
if(transparent){
// ::AfxMessageBox("1");
return true;
}else{
return CButton::OnEraseBkgnd(pDC);
}
}
我们在这个返回true就可以了,当然在drawitem里沃们还要自己绘制按钮的边框,下面给出调用按钮透明的函数:
void bb::settransparent(){
this->transparent=1;
this->GetParent()->Invalidate();
}
这里我对按钮的父窗体用了Invalidate方法,这样才能使整个窗体重绘,使按钮透明的效果马上显示出来。
好了,文章有不妥之处,还望大家多多指正。