我建了一个SDI基于CformView的工程,在对话框IDD_DRAWSTUDY_FORM上放了一个id为IDC_PICTURE的控件,我想在控件上绘一个简单的矩形:请帮我看看如下代码,为什么我的矩形不能出来?该问题我已问过keen大侠。
当我将IDC_PICTURE的属性中的type设成FRAME是可以显示我要画的矩形,但我要实现的是当type为rectangle时能照样画出矩形,不知为什么?但是我在基于对话框的工程里面试过却是可以的,请帮忙看看问题在哪里。
另附工程源码在ftp://pub:[email protected]/pub/下的DrawStudy.exe。
void CDrawStudyView::OnPaint() 
{
    CPaintDC dc(this); // device context for painting
    
    // TODO: Add your message handler code hereCWnd* p = GetDlgItem(IDC_PICTURE); 
CDC* pDC=p->GetWindowDC();
pDC->Rectangle(30,30,80,80);
p->ReleaseDC(pDC);}

解决方案 »

  1.   

    void CDrawStudyView::OnPaint() 
    {
        CPaintDC dc(this); // device context for painting
        
        // TODO: Add your message handler code hereCWnd* p = GetDlgItem(IDC_PICTURE); 
    CDC* pDC=p->GetDC();
    pDC->Rectangle(30,30,80,80);
    p->ReleaseDC(pDC);}
      

  2.   

    好像不是画笔颜色的问题,而是onpaint函数画了后,picture控件又自己重绘了它自己,所以我要画的矩形只是闪了一下,就又被一个白色的矩形覆盖了。
    一直不知如何解决,有兴趣的你要不也自己试试。我的源码放在
    ftp://pub:[email protected]/pub/下的DrawStudy.exe。
      

  3.   

    用其他方法代替,当然是行,可我只想在picture控件上画出图来,而且picture的type必须设成rectangle,我见过别人做的程序这样也是可以的,而把picture的type设成frame我知道是行的,但不是我所想要的。麻烦各位帮忙实践一下。
      

  4.   

    invoke the picture's redraw(false) before your painting.
      

  5.   

    czn,你能说详细点吗?
    void CDrawStudyView::OnPaint() 
    {
        CPaintDC dc(this); // device context for painting
        
        // TODO: Add your message handler code hereCWnd* p = GetDlgItem(IDC_PICTURE); 
    CDC* pDC=p->GetDC();
    pDC->Rectangle(30,30,80,80);
    p->ReleaseDC(pDC);}