我在对话框的OnPaint()里面添加了以下代码,希望能在指定地方输出“test“几个字,可是并没有输出,不知道我哪里写错了,请大家指点下
                  CPaintDC dc(this); // 用于绘制的设备上下文
CRect r(55,55,200,200);
CString sItem = "test";
CDC fontDC;
fontDC.CreateCompatibleDC(&dc);
CFont fontSel;
CFont* pOldFont;
fontSel.CreateFont(16,0,0,0,FW_NORMAL,
                  false,false,false,   
GB2312_CHARSET,   
OUT_STROKE_PRECIS,   
CLIP_STROKE_PRECIS,   
PROOF_QUALITY,   
VARIABLE_PITCH   |FF_SWISS,   
_T("楷体"));
pOldFont = fontDC.SelectObject(&fontSel);
fontDC.SetTextColor(RGB(255,0,0));
fontDC.TextOut(r.left + 2, r.top + 1, sItem);
fontDC.SelectObject(pOldFont);
dc.BitBlt(r.left, r.top, r.Width(), r.Height(), 
                  &fontDC, 
r.left, r.top, SRCCOPY); fontDC.DeleteDC();

解决方案 »

  1.   

    fontDC没有bitmap:
    CBitmap bm;
    bm.CreateCompatibleBitmap(&dc, width, height);
    fontDC.SelectObject(&bm);
      

  2.   

    CDC fontDC;
    fontDC.CreateCompatibleDC(&dc);
    // add
    CRect rc;
    GetClientRect(&rc);
    CBitmap bm;
    bm.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
    fontDC.SelectObject(&bm);
    // end
      

  3.   

    老大
    还是没有在对话框输出“test”哦
      

  4.   

    现在是这样,还是没有输出“test”                  
                      CDialog::OnPaint();
    CPaintDC dc(this); // 用于绘制的设备上下文
    CRect r(55,55,200,200);
    CString sItem = "test";
    CDC fontDC;
    fontDC.CreateCompatibleDC(&dc);
    // add
    CRect rc;
    GetClientRect(&rc);
    CBitmap bm;
    bm.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
    fontDC.SelectObject(&bm);
    // end
    CFont fontSel;
    CFont* pOldFont;
    fontSel.CreateFont(16,0,0,0,FW_NORMAL,false,false,false,   
    GB2312_CHARSET,   
    OUT_STROKE_PRECIS,   
    CLIP_STROKE_PRECIS,   
    PROOF_QUALITY,   
    VARIABLE_PITCH   |FF_SWISS,   
    _T("楷体"));
    pOldFont = fontDC.SelectObject(&fontSel);
    fontDC.SetTextColor(RGB(255,0,0));
    fontDC.TextOut(r.left + 2, r.top + 1, sItem);
    fontDC.SelectObject(pOldFont);
    dc.BitBlt(r.left, r.top, r.Width(), r.Height(), &fontDC, 
    r.left, r.top, SRCCOPY);
    fontDC.DeleteDC();
      

  5.   

    直接用 dc.TextOut(r.left + 2, r.top + 1, sItem); 不行吗,另外建一个fontDC的目的是什么呢?
      

  6.   

    第一句CPaintDC dc(this);改成ClientDC dc(this);
    或者将代码加到下面else里面的CDialog::OnPaint();前面(总之不要先执行CDialog::OnPaint();)
              if (IsIconic())
    {
    CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
                      ////////// add here CDialog::OnPaint();
    }
      

  7.   

    另外建一个fontDC可以实现双缓冲,可以多步绘图不闪烁。当然楼主只用一句TextOut,看不出效果。
      

  8.   

    dc.BitBlt(r.left, r.top, r.Width(), r.Height(), &fontDC, 
    r.left, r.top, SRCCOPY);
    //////////////////////////////////////////////////////////////这句错了,应改为dc.BitBlt(r.left, r.top, r.Width(), r.Height(), &fontDC, 
    0, 0, SRCCOPY);
      

  9.   

    CPaintDC dc(this); // 用于绘制的设备上下文
    CRect r(55,55,200,200);
    CString sItem = "test";
    CDC fontDC;
    fontDC.CreateCompatibleDC(&dc);
    // add
    CRect rc;
    GetClientRect(&rc);
    CBitmap bm;
    bm.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
    fontDC.SelectObject(&bm);
    // end
    CFont fontSel;
    CFont* pOldFont;
    fontSel.CreateFont(16,0,0,0,FW_NORMAL,false,false,false,   
    GB2312_CHARSET,   
    OUT_STROKE_PRECIS,   
    CLIP_STROKE_PRECIS,   
    PROOF_QUALITY,   
    VARIABLE_PITCH   |FF_SWISS,   
    _T("楷体"));
    pOldFont = fontDC.SelectObject(&fontSel);
    fontDC.SetTextColor(RGB(255,0,0));
    fontDC.TextOut(r.left + 2, r.top + 1, sItem);
    fontDC.SelectObject(pOldFont);
    dc.BitBlt(r.left, r.top, r.Width(), r.Height(), &fontDC, 
    r.left, r.top, SRCCOPY);
    fontDC.DeleteDC();
      

  10.   

    谢谢楼上各位
    特别是pfans(pfans) 
    真的很感激
    结帖