CClientDC dc(this);
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
CPen *pOldPen;
pOldPen=dc.SelectObject(&pen);
dc.Ellipse(136,46,144,54);
dc.TextOut(140,50,"SP");
上面的程序不能将图绘制在控件中,修改为如下:
CWnd *dc=this->GetDlgItem(IDC_STATIC);
ASSERT(dc);
CPaintDC dc(this);
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
CPen *pOldPen;
pOldPen=dc.SelectObject(&pen);
dc.Ellipse(136,46,144,54);
dc.TextOut(140,50,"SP");就直接不显示图形了,请问高手这是怎么回事,该如何修改?

解决方案 »

  1.   

    你将PICTURE控件的名字IDC_STATIC改一下,比如IDC_PIC,试试看
      

  2.   

    根本就没得到控件的DC,一直用的主窗口DC在那画
      

  3.   

    picture控件中绘图
    窗口设置图片背景,直接在窗口上绘制会好一些
      

  4.   

    首先将static静态框放满整个对话框以便对程序进行准确测试:代码修改:
    CWnd *hwnd=this->GetDlgItem(IDC_STATIC);
    HDC hdc= ::GetDC(hwnd);
    CDC dc;
    CPen pen;
    CPen *pOldPen;dc.Attach(hdc);
    pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
    pOldPen=dc.SelectObject(&pen);
    dc.Ellipse(136,46,144,54);
    dc.TextOut(0,0,"SP"); 
      

  5.   

    控件ID得改下,比如改为IDC_STC_PIC,然后获取DC,然后再画就可以咯~CDC* pDC = GetDlgItem(IDC_STC_PIC)->GetDC();
      

  6.   

    控件ID得改下,比如改为IDC_STC_PIC,然后获取DC
    代码修改: 
    CWnd *hwnd=this->GetDlgItem(IDC_STC_PIC); 
    HDC hdc= ::GetDC(hwnd); 
    CDC dc; 
    CPen pen; 
    CPen *pOldPen; dc.Attach(hdc); 
    pen.CreatePen(PS_SOLID,1,RGB(255,0,0)); 
    pOldPen=dc.SelectObject(&pen); 
    dc.Ellipse(136,46,144,54); 
    dc.TextOut(0,0,"SP"); 
      

  7.   

    使用这个之后:
    CWnd *hwnd=this->GetDlgItem(IDC_STATIC); 
    HDC hdc= ::GetDC(hwnd); 
    CDC dc; 
    CPen pen; 
    CPen *pOldPen; dc.Attach(hdc); 
    pen.CreatePen(PS_SOLID,1,RGB(255,0,0)); 
    pOldPen=dc.SelectObject(&pen); 
    dc.Ellipse(136,46,144,54); 
    dc.TextOut(0,0,"SP"); 
    出现这样的错误:
    CWnd *hwnd=this->GetDlgItem(IDC_STC_PIC); 这个也使用了。
    error C2664: 'GetDC' : cannot convert parameter 1 from 'class CWnd *' to 'struct HWND__ *'