我用下面的方法给对话框贴了一张背景图,1. 给对话框类增加一个CBrush类型的变量m_bkBrush。
2. 导入一个Bitmap文件,ID更改为IDB_BACKGROUND。
3. 在对话框的构造函数中加入代码:
   
  CBitmap *pBitmap=new CBitmap;
  pBitmap->LoadBitmap(IDB_BACKGROUND);
  m_bkBrush.CreatePatternBrush(pBitmap);
  delete pBitmap;4. 为对话框映射WM_CTLCOLOR消息,在对应的处理函数中加入代码:  if(nCtlColor==CTLCOLOR_DLG)
    return (HBRUSH)m_bkBrush.GetSafeHandle();背景图确实贴上了,可是问题是,对话框上的Static控件不是透明的,依然保留对话框的灰色背景,如何才能去掉灰色背景,让对话框上的文字从背景图片看上去是透明的?

解决方案 »

  1.   

    if(nCtlColor == CTLCOLOR_STATIC);
    {
    pDC->SetBkMode( TRANSPARENT );
    return (HBRUSH)GetStockObject( NULL_BRUSH );
    }
      

  2.   

    非常感谢: computerjjk(天才姜师不哭) ( ) 信誉:98
      

  3.   

    HBRUSH CCheckWork_Leave_View::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor); if(nCtlColor == CTLCOLOR_STATIC)
    {
    pDC->SetBkMode(TRANSPARENT); //设置背景透明
    return HBRUSH(GetStockObject(HOLLOW_BRUSH));
    }

    return hbr;
    }