19,468
社区成员
发帖
与我相关
我的任务
分享
//
void CRectTrackDlg::DrawRectBorder(CDC &dc,CRect rc)
{
int s= dc.SaveDC();
dc.SetROP2(R2_NOT);
// dc.SetMapMode(MM_HIMETRIC);
// dc.DPtoLP(&rc);
dc.MoveTo(rc.left,rc.bottom);
dc.LineTo(rc.left,rc.top);
dc.LineTo(rc.right,rc.top);
dc.LineTo(rc.right,rc.bottom);
dc.LineTo(rc.left,rc.bottom);
dc.RestoreDC(s);
}
void CRectTrackDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_startPoint != m_OldPoint)
{// erase old rect
CClientDC dc(this);
CRect rc(m_startPoint,m_OldPoint);
rc.NormalizeRect();
DrawRectBorder(dc,rc);
}
m_startPoint = point;
m_OldPoint = point;
//
CDialog::OnLButtonDown(nFlags, point);
}
//
void CRectTrackDlg::shoudongchuli()
{
CClientDC dc(this);
CRect rc(m_startPoint,m_OldPoint);
rc.NormalizeRect();
for(int j=rc.top;j<=rc.bottom;j++)
{
for(int i=rc.left;i<=rc.right;i++)
{
dc.SetPixel(i,j,255);
}
}
}
//
void CRectTrackDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_OldPoint=point;
// shoudongchuli();
CDialog::OnLButtonUp(nFlags, point);
}
void CRectTrackDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (MK_LBUTTON==nFlags)
{
CClientDC dc(this);
if(m_startPoint != m_OldPoint)
{
CClientDC dc(this);
CRect rcOld(m_startPoint,m_OldPoint);
rcOld.NormalizeRect();
DrawRectBorder(dc,rcOld);
}
CRect rcNew(m_startPoint,point);
rcNew.NormalizeRect();
DrawRectBorder(dc,rcNew);
m_OldPoint = point;
}
//
CDialog::OnMouseMove(nFlags, point);
}