项目是个单文档类型,然后在视图view中通过create创建了一个静态文本,view的背景是一张图片,现在的需求是让这个静态文本背景透明,以显示文本所在背景色。我重载了OnCtlColor,在里面写了  pDC->GetBkMode(TRANSPARENT);但是那个文本还是没有透明,为什么呢?怎么处理才能让文本显示所在view的背景色呢?

解决方案 »

  1.   

    pDC->GetBkMode  ?
      

  2.   

    是的,就像下面那样.....
    pDC->SetBkMode(TRANSPARENT);
    return   (HBRUSH)::GetStockObject(NULL_BRUSH); 
    .....  
    但是文本还是没有透明。
      

  3.   

    在静态文本的父窗口中增加WM_CTLCOLOR处理HBRUSH CMfcCVView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CView::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    if (nCtlColor == CTLCOLOR_STATIC && pWnd->GetDlgCtrlID() == 0x111)
    {
    pDC->SetBkMode(TRANSPARENT);
    return (HBRUSH)::GetStockObject(NULL_BRUSH);
    }
    // TODO: Return a different brush if the default is not desired
    return hbr;
    }
      

  4.   

    文本的话,用不着CStatic,您直接在图上DrawText好了。
    ------------------------------------------------------------------------