直接画就行了。int oldMode=pDC->SetBkMode(TRANSPARENT);
pDC->TextOut(500,20,"nothing");
pDC->SetBkMode(oldMode);

解决方案 »

  1.   

    是将字与位图一起画到内存兼容DC中,然后贴到设备DC上
      

  2.   

    怎么会行不通?我在自己的程序全部实现了。
    1. 用我的方法要注意先画图,再画字。(如果重画图,则字也要重写)2. 用orbit的方法,要先写字(保证是白底),再用SRCAND参数把位图贴到内存DC上,再传出来。两段代码分别如下:
    pDC->SetBkMode(OPAQUE);
    pDC->StretchBlt(m_pt.x,m_pt.y,m_size.cx,m_size.cy,&m_dcMem,0,0,m_bmInfo.bmWidth-1,
    m_bmInfo.bmHeight-1,SRCCOPY);  //位图画出来
    int oldMode=pDC->SetBkMode(TRANSPARENT);//OPAQUE
    pDC->TextOut(50,20,"nothing");
    pDC->SetBkMode(oldMode);
    2.  CDC memDC;
    CBitmap *m_pBitmap,*oldBitmap;

    memDC.CreateCompatibleDC(pDC);

    m_pBitmap=new CBitmap;
    m_pBitmap->CreateCompatibleBitmap(pDC,m_size.cx,m_size.cy);

    CBrush whiteBrush(0X00ffffff);
    oldBitmap=memDC.SelectObject(m_pBitmap);
    CBrush *oldBrush=memDC.SelectObject(&whiteBrush);
    memDC.PatBlt(0,0,m_size.cx,m_size.cy,PATCOPY); memDC.SetTextColor(0X000000); HFONT hOldFont=(HFONT__ *)memDC.SelectObject(hFont); memDC.TextOut(50,20,"nothing");
    memDC.StretchBlt(m_pt.x,m_pt.y,m_size.cx,m_size.cy,&m_dcMem,0,0,m_bmInfo.bmWidth-1,
    m_bmInfo.bmHeight-1,SRCAND);
    pDC->BitBlt(m_pt.x,m_pt.y,m_size.cx,m_size.cy,&memDC,0,0,SRCCOPY); memDC.SelectObject(oldBitmap);
    memDC.SelectObject(oldBrush);
    memDC.SelectObject(hOldFont);
    myFont.DeleteObject();
    m_pBitmap->DeleteObject();
    whiteBrush.DeleteObject();
    CWnd::ReleaseDC(&memDC);
    memDC.DeleteDC();看看哪种方法简单。
      

  3.   

    happylaodu你好:
       你的方法只能在普通的窗口中画,由于视频是不但自动刷新(overlay)方式,它好象没有验一个WM_PAINT消息,故不可能在OnPaint函数中打入字体,请问你是在那里放入这段代码的???
      

  4.   

    happylaodu你好:
       你的方法只能在普通的窗口中画,由于视频是不但自动刷新(overlay)方式,它好象没有验一个WM_PAINT消息,故不可能在OnPaint函数中打入字体,请问你是在那里放入这段代码的???