本帖最后由 VisualEleven 于 2013-11-07 11:37:13 编辑

解决方案 »

  1.   

    先用FillRect给兼容DC填充下背景颜色,用SetTextColor设置文字颜色等
      

  2.   

    你这个我都想到了,SetTextColor 的只是字体颜色变了,背景依旧是黑色
    改变背景这个方法有限制,首先你要得到外部给的背景色,而且万一外部给的是渐变色咋办这样不是把Edit的背景都改了么
      

  3.   

    “HDC hCompatibleDC = CreateCompatibleDC(hdc);”
    这个 hdc 必须是 彩色 dc
      

  4.   

    彩色DC?不懂,跟普通DC有区别么,怎么用呢?
      

  5.   

    这个 dc 是 GetDC(); 来的?
      

  6.   

    “但结果输出的结果是字体部分全黑色,”
    字是黑色 ? 还是 字的背景 是黑色 ?
    hCompatibleDC 有没有 Pen ?
      

  7.   

    字体背景
    我画字符的用的是DrawText没要用到Pen所以没定义
      

  8.   

    SelectObject(hCompatibleDC,hOldBmp);  


    HBITMAP hCompatibleBmp 
    复制到 剪贴板 看看 对不对。
      

  9.   

    SetBkMode(hCompatibleDC,nOldColor); 
    LZ这句算啥意思啊?那是给背景设透明吗?
    该函数第二个参数只有两种选择:OPAQUE 或 TRANSPARENT 
      

  10.   

    hCompatibleDC自己填充一下背景色,然后再DrawText
      

  11.   

    刚用CreateCompatibleBitmap创建出来的位图就是黑色,除非你内存DC中的是32位位图,最后用AlphaBlend画出来
      

  12.   

    楼主只是DrawText,没必要用双缓冲吧,直接DrawText到屏幕DC即可
      

  13.   

    我想的是当输入的字符长度大于控件宽度时,用兼容DC截取显示我想要的部分DrawText时指定了RECT,就不会画到RECT外面吧
      

  14.   

    我想的是当输入的字符长度大于控件宽度时,用兼容DC截取显示我想要的部分DrawText时指定了RECT,就不会画到RECT外面吧
    是啊 但是它只显示前面一部分的,后面不显示 
    而我要的效果是可以截取任何一部分,或中间,或结尾
      

  15.   


    可以考虑使用SetWindowOrgEx那类函数