memDC.SetBkColor(RGB(0,0,0));//这种方法是怎么实现字体背景色与DC里的背景色实现颜色一致的//下面是SetBkColor不是设置的白色背景吗????     
memDC.SetTextColor(RGB(255,255,255));    
 memDC.BitBlt(rcClient.left,rcClient.top,rcClient.Width(),rcClient.Height(),&maskDC,rcClient.left,rcClient.top,SRCAND);     
dc.SetBkColor(RGB(255,255,255));     
dc.SetTextColor(RGB(0,0,0)); 

解决方案 »

  1.   

    关键是:"SRCAND" 而不是 SRCCOPY
      

  2.   

    SRCAND Combines the colors of the source and destination rectangles by using the Boolean AND operator. 
    SRCAND 存在颜色即不拷贝SRCCOPY  Copies the source rectangle directly to the destination rectangle. 
    SRCCOPY  是直接拷贝的SetBkColor这玩样只针对写字的背景的
      

  3.   

    SetBkColor和SetTextColor除了影响DrawText、TextOut等函数画出的文字背景外,另外一个作用就体现楼主问的这个问题上
    http://www.vckbase.com/index.php/wv/358.html
    这里也说的很清楚了表示RGB颜色只用了24位,白色24位全是1,黑色24位全是0
    SRCAND 是相与,数据(二进制里只有0或者1)与1相与,数据不变
    SRCPAINT 是相或,数据(二进制里只有0或者1)与0相或,数据不变
      

  4.   

    SetBkColor除了影响DrawText、TextOut等函数画出的文字背景外,另外一个作用就体现楼主问的这个问题上
    http://www.vckbase.com/index.php/wv/358.html
    这里也说的很清楚了很佩服楼主这么好学,不过其实楼主直接用系统提供的TransparentBlt就行了