解决方案 »

  1.   

    ::CreateCompalibleBitmap(MDC,100,100);绝对不能用 MDC, 要 取 DC  (GetDCr) CClientDC(this))
      

  2.   

    环境为win32程序,不是mfc程序,能给出完整代码吗?
      

  3.   

    如果在paint
    case WM_PAINT:
    hdc=BeginPaint(hWnd,&ps);

    EndPaint(hWnd,&ps);
      

  4.   

    有人能给出完整代码吗?没有hWnd,不是WM_PAINT消息,是在内存HBITMAP中绘图。
      

  5.   

    hdc=::GetDC(0); // 桌面 DC
      

  6.   

    感谢schlafenhamster!,现贴出完整代码,供大家借鉴,少走弯路。///////////////////////////////////////////////////////////////////////////
    // 创建内存DC和位图
    HDC hDC = ::GetDC(0);
    HDC MDC = ::CreateCompalibleDC(hDC);
    HBITMAP hMemBmp = ::CreateCompalibleBitmap(MDC,100,100);
    HGDIOBJ hOldBmp = ::SelectObject(MDC,hMemBmp);
    ///////////////////////////////////////////////////////////////////////////
    // 设置字体背景色和字体色
    ::SetBackColor(MDC,RGB(0,0,0));
    ::SetTextColor(MDC,RGB(255,0,0));
    // 输出字体
    ::TextOut(MDC,0,0,"测试",strlen("测试"));
    ///////////////////////////////////////////////////////////////////////////
    // 其他代码
    ......
    ///////////////////////////////////////////////////////////////////////////
    // 还原
    ::SelectObject(MDC,hOldBmp);
    ::DeleteObject(hMemBmp);
    ::DeleteDC(MDC);
    ::ReleaseDC(0,hDC);