15,979
社区成员
发帖
与我相关
我的任务
分享
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);
InvertRectColor(dc,rc);
}
// afxDump << point << "\n";
m_startPoint = point;
m_OldPoint = point;
//
CDialog::OnLButtonDown(nFlags, point);
}\void CRectTrackDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
ReleaseCapture();
//
CRect rcDlg;
GetClientRect(rcDlg);
if(point.x < 0) point.x=0;
if(point.y < 0) point.y=0;
if(point.x > rcDlg.Width() ) point.x=rcDlg.Width();
if(point.y > rcDlg.Height()) point.y=rcDlg.Height();
m_OldPoint=point;
// draw rect
CClientDC dc(this);
CRect rc(m_startPoint,m_OldPoint);
rc.NormalizeRect();
InvertRectColor(dc,rc);
//
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)
{
SetCapture();
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);
}
使用 CRectTrack