利用了双缓冲显示文字!!现在已经显示了,原来这个对话框的背景颜色是蓝色,用双缓冲显示的区域是整个对话框的一部分,显示成黑色,我想对这个进行设置,可不知道该怎么设置才对,我用setbkmode,这个方法只是将文字所在的区域变成了透明啊!!可整个位图的颜色该怎么设置呢??用什么方法??在线狂等,急求!!

解决方案 »

  1.   

    用SetBkColor设置背景颜色,然后用ExtTextOut,指定整个位图矩形,用ETO_OPAQUE标志:
    ::ExtTextOut(hDC, 0, 0, ETO_OPAQUE, &rc, NULL, 0, NULL);
      

  2.   

    void C**Dlg::OnMouseMove(UINT nFlags, CPoint point) 
    {
    CDC *pdc=this->GetDC();
    CDC   MenDC;   
    CBitmap   bm;
    MenDC.CreateCompatibleDC(pdc);   
    bm.CreateCompatibleBitmap(pdc,1000,1000);   
    MenDC.SelectObject(&bm);

    MenDC.FillSolidRect(0,0,1000,1000,RGB(255,255,255));  //这里将屏幕清成白色了,你根据情况自己改,里面的1000是位图的宽度和高度
                                                                           //
    //-------------------------------------------------------------------        DrawAll(&MenDC);
    //-------------------------------------------------------------------
    pdc->BitBlt(0,0,1000,1000,&MenDC,0,0,SRCCOPY);  
    MenDC.DeleteDC();   
    bm.DeleteObject();
    ReleaseDC(pdc); CDialog::OnMouseMove(nFlags, point);
    }
      

  3.   

    我重新调试了一下,发现是显示区域的事啊,我把代码贴上来,帮我分析一下吧!GetWindowRect( hwnd, &rcWindBounds);
    RECT pRect;
    pRect.bottom = rcWindBounds.bottom;
    pRect.left = rcWindBounds.left + 40;
    pRect.right = rcWindBounds.right-50;
    pRect.top = PLUG_HEIGHT / 2;//PLUG_HEIGHT  = 36pDC = ::CreateCompatibleDC(hDC);
    pBitmap = ::CreateCompatibleBitmap(hDC,pRect.right - pRect.left,pRect.bottom - pRect.top);
    ::SelectObject(pDC,pBitmap); ::SetBkColor(pDC,RGB(255,0,0)); ::SetTextColor(pDC,RGB(226,226,52));
    HBRUSH br;
    br = ::CreateSolidBrush(RGB(255,0,0));
    ::FillRect(pDC,&pRect,br);
    ::ExtTextOut(pDC, 0, 0, ETO_RTLREADING, &pRect, _T("北京北京北京北京北京北京北京北京北京北京北京北京北京北京北京"), 6, 0);

    ::BitBlt(hDC,pRect.left,pRect.top,pRect.right - pRect.left,pRect.bottom - pRect.top,pDC,0,0,SRCCOPY);
    ::DeleteDC(pDC);有兴趣的,加我Q14645094我把效果给你发过去,一起讨论一下!