VC Static控件上画图的方法[转]
古城
在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的技术内幕,上面有这个例子.
本文评论
发表评论
这是一个别人称之为角落的世界
幸而,它的确是我的世界