步骤五:使用AppWizard为CExamTrackerView增加WM_LBUTTONDOWN处理消息,在函数中我们必须处理三种情况;鼠标选中矩形对象但是不处于矩形边界,这种情况仅仅是对矩形进行移动,第二种情况:鼠标处于矩形边界,这时候拖动鼠标将会调整矩形的大小.第三种情况时鼠标没有选中矩形的任何地方,这个时候将会产生橡皮条效果,橡皮条内的所有内容被选中.具体代码如下:
void CExamTrackerView::OnLButtonDown(UINT nFlags, CPoint point)
{
CExamTrackerDoc* pDoc = GetDocument();
//部(resizeOutside)
}
步骤六:到目前程序的原型基本上已经定下了,可以运行了!运行结果试试看!但是运行中你会发现一个问题,在VC,Delphi中鼠标再不同的区域可以有不同的形状,比如如果选中图形区域鼠标为十字形状,选中边界时成一字形.在程序中我们通过处理WM_SETCURSOR消息来获取这种效果。
BOOL CExamTrackerView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
}
void CExamTrackerView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
//按下→的同时按下了Shift键,将图像区域向右增加5个位置
if(::GetKeyState(VK_SHIFT)&0xff00)
{
pDoc-m_tracker.m_rect.right=pDoc-m_tracker.m_rect.right+5;
pDoc-UpdateAllViews(NULL);
}
//否则,图像将向右移动5个位置
else
{
pDoc-m_tracker.m_rect.left=pDoc-m_tracker.m_rect.left+5;
pDoc-m_tracker.m_rect.right=pDoc-m_tracker.m_rect.right+5;
pDoc-UpdateAllViews(NULL);
}
break;
//如果按下的是↑
case VK_UP:
//按下↑的同时按下了Shift键,将图像区域向上减少5个位置
if(::GetKeyState(VK_SHIFT)&0xff00)
{
pDoc-m_tracker.m_rect.bottom=pDoc-m_tracker.m_rect.bottom-5;
pDoc-UpdateAllViews(NULL);
}
//否则,图像将向上移动5个位置
else
{
pDoc-m_tracker.m_rect.top=pDoc-m_tracker.m_rect.top-5;
pDoc-m_tracker.m_rect.bottom=pDoc-m_tracker.m_rect.bottom-5;
pDoc-UpdateAllViews(NULL);
}
break;
//如果按下的是↓,图像将向下移动5个位置
case VK_DOWN:
if(::GetKeyState(VK_SHIFT)&0xff00)
{
pDoc-m_tracker.m_rect.bottom=pDoc-m_tracker.m_rect.bottom+5;
pDoc-UpdateAllViews(NULL);
}
else
{
pDoc-m_tracker.m_rect.top=pDoc-m_tracker.m_rect.top+5;
pDoc-m_tracker.m_rect.bottom=pDoc-m_tracker.m_rect.bottom+5;
pDoc-UpdateAllViews(NULL);
}
break;
}
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
所有的任务都完成了,慢,还有通过工具栏改变区域边界的方法,我就提供一个吧,剩下的大家就看源代码吧,应该很简单的,大家都能看的懂,需要注意的是几种形式的不可兼容性,否则会出错,其余的我就不费笔墨和口舌了
void CExamTrackerDoc::OnSolidline()
{
CRect rectTrue;
m_tracker.GetTrueRect(&rectTrue);
m_tracker.m_nStyle &= ~CRectTracker::dottedLine;
m_tracker.m_nStyle ^= CRectTracker::solidLine;
UpdateAllViews(NULL, (LPARAM)(LPCRECT)rectTrue);
UpdateAllViews(NULL);
}所有的任务都完成了慢
}
使用CRectTracker类进行对象动态定位(二)
最新推荐文章于 2014-08-26 21:20:32 发布