我想在static控件上显示一个图标。用下面的代码:
CStatic *pStatic=new CStatic;
pStatic->Create("",WS_CHILD|WS_VISIBLE|SS_ICON,CRect(10,10,50,50),this,IDC_STATIC1);
pStatic->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
图标是显示了,但由于static控件是矩形的,所以能看到static控件的背景色。我想把控件背景弄成透明的,试了下面的代码,但是没效果:
CDC *pDC=pStatic->GetDC();
pDC->SetBkMode(TRANSPARENT);请问这是为什么呢?如果要使控件背景透明应该怎么做呢?

解决方案 »

  1.   

    在CDialogOnCtlColor或重载CStatic的OnPaint中
    SetBkMode(TRANSPARENT);
      

  2.   

    http://www.redhacker.cn/Article/ShowArticle.asp?ArticleID=1722
      

  3.   

    我从CStatic继承了一个新类,然后重载它的OnPaint().
    但这样动态生成的静态控件就什么也不能显示了,为什么呢?
      

  4.   

    你是不是忘了在重载的OnPaint()中调它父类的OnPaint()。
      

  5.   

    SetBkMode(TRANSPARENT)之后是不是还要写其他代码呢?我在OnPaint()中SetBkMode(TRANSPARENT)后没任何效果。在CtlColor中SetBkMode(TRANSPARENT)后控件背景是黑的。
      

  6.   

    pDC->SetTextColor
    pDC->SetBkMode
      

  7.   

    vckbase上有个实现透明控件的代码,可以参考一下