谢谢: 要设置控件透明可以在属性中设置,我用了WM_CTLCOLOR消息来实现的。可是我这个控件是要经常移动的,在移动中该控件就不是一直透明的。我用phoenix96_2000(Jack Of All Trades)方法,好象没有效果,用redrawwindow也一样不行。 大家多想想办法,应该能解决的呀。反正回答我的问题都给分的。
hbr=m_bru;//m_bru是我定义的画刷 if (nCtlColor==CTLCOLOR_STATIC) { pDC->SetBkMode(TRANSPARENT);//重点就在这里了. } // TODO: Return a different brush if the default is not desired return hbr; } 试一下.看看我用是好用的
to victorliu168(): 首先要谢谢你。很遗憾,你的帖子出来的时候我已经把分加完了。 然后就是你的方法我已经用过了,当这个控件是静态不动的时候就可以实现透明的,但是我的控件是要经常移动的。所以我早就试过了,好象不行! 再次谢谢你的帮忙!
中加入刷新的语句,UpdateWindow
我还不知道控件怎么设置可以透明,在2000和xp中windows提供了使窗口透明的方法。
要设置控件透明可以在属性中设置,我用了WM_CTLCOLOR消息来实现的。可是我这个控件是要经常移动的,在移动中该控件就不是一直透明的。我用phoenix96_2000(Jack Of All Trades)方法,好象没有效果,用redrawwindow也一样不行。
大家多想想办法,应该能解决的呀。反正回答我的问题都给分的。
void CMyStatic::Transparent()
{
RECT r,w;
GetClientRect( &r );
GetWindowRect( &w );
CWnd * pParentWnd = GetParent();
pParentWnd->ScreenToClient( &w );
pParentWnd->InvalidateRect( &w );}
谢谢你。能不能告诉我为什么要这样吗?谢谢你。
HBRUSH CWnd2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
//HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
hbr=m_bru;//m_bru是我定义的画刷
if (nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);//重点就在这里了. }
// TODO: Return a different brush if the default is not desired
return hbr;
}
试一下.看看我用是好用的
首先要谢谢你。很遗憾,你的帖子出来的时候我已经把分加完了。
然后就是你的方法我已经用过了,当这个控件是静态不动的时候就可以实现透明的,但是我的控件是要经常移动的。所以我早就试过了,好象不行!
再次谢谢你的帮忙!