VC Static控件上画图的方法[转]

 
古城
@ 2007.08.27
分类:技术笔记
点击:1664  评论:0
 
 
 
    在Static控件上画图的方法.. 
    声明两个变量在view或Dialog的头文件中. 
    CWnd* pWnd; //表示控件窗口的变量 
    CDC* pControlDC; //表示控件窗口的设备描述表.DC 
    在OnInitialUpdate()函数中进行赋值(View) 
    pWnd=GetDlgItem(IDC_STATICRCT); 
    pControlDC=pWnd->GetDC(); 
    重载OnPaint()函数. 
    在函数中 

    void CMy****View::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting

    // TODO: Add your message handler code here
    pWnd=GetDlgItem(IDC_PAINT_STATIC); 
    pControlDC=pWnd->GetDC(); 

    pWnd->Invalidate(); 
    pWnd->UpdateWindow(); 

    CRect rct; 
    pWnd->GetClientRect(rct); 

    CPen RectPen(PS_DASH,1,0x0000FF);
    pControlDC->SelectObject(&RectPen); 

    //-----------------------------------------------
    //-- Draw
    //-----------------------------------------------
    pControlDC->Rectangle(rct.left+10,rct.top+10,rct.right-10,rct.bottom-10); 

    pControlDC->MoveTo(0,0);
    pControlDC->LineTo(0,100);
    pControlDC->LineTo(100,100);
    pControlDC->LineTo(100,0);
    pControlDC->LineTo(0,0);

    RectPen.DeleteObject();
    pWnd->ReleaseDC(pControlDC); 
    }

    这里有一个技巧应该注意,即在控件窗口内绘图的同时,还要防止Windows对它重复绘制.依次调用Invalidate/UpdateWindow,便可以完成这项工作. 

    看看VCc的技术内幕,上面有这个例子. 
 
 
 
 
 

本文评论

 
 

发表评论

你的评论
← 填你的昵称
以下内容非必填,可根据需要填写
← 可以展示在你的评论上方
← 不会在页面展示
← 不会在页面展示
← 只给我看?勾选上
这是一个别人称之为角落的世界
幸而,它的确是我的世界