📄 subject_22513.htm
字号:
<p>
序号:22513 发表者:无赖 发表日期:2002-11-26 15:35:04
<br>主题:问题,问题:(
<br>内容:在mfc新建的工程里,在CView类里用move to 和line to画了几个图<BR>这时我想鼠标点在图上,按住的话可以拖动图,在CView类里加了两个<BR>消息响应函数OnLBUTTONDOWN and OnLBUTTONUP,可在这个函数下<BR>用什么可以取得点下去的坐标值,坐标值是什么类型的呢?<BR>要用坐标值和之前图的做比较该怎么办呢?<BR><BR>问问问啊:)<BR>高手帮帮忙啊:)
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:CDMA2000 回复日期:2002-11-26 15:39:26
<br>内容:如何实现一个橡皮区矩形 <BR><BR>CRectTracker是一个很有用的类,可以通过调用CRectTracker:: TrackRubberBand响应WM_LBUTTONDOWN消息来创建一个橡皮区矩形。下例表明使用CRectTracker移动和重置视窗中的蓝色椭圆的大小是很容易的事情。<BR><BR>首先,在文件档中声明一个CRectTracker数据成员:<BR><BR>class CSampleView : Public CView<BR><BR>{<BR><BR>…<BR><BR>public :<BR><BR>CrectTracker m_tracker;<BR><BR>…<BR><BR>};<BR><BR>其次,在文档类的构造函数中初始化CRectTracker 对象:<BR><BR>CSampleDoc:: CSampleDOC ()<BR><BR>{<BR><BR>//Initialize tracker position, size and style.<BR><BR>m_tracker.m_rect.SetRect (0, 0, 10, 10);<BR><BR>m_tracker.m_nStyle=CRectTracker:: resizeInside |<BR><BR>CRectTracker:: dottedLine;<BR><BR>}<BR><BR>然后,在OnDraw函数中画椭圆和踪迹矩形:<BR><BR>void CSampleView:: OnDraw (CDC* pDC)<BR><BR>{<BR><BR>CSampleDoc* pDoc=GetDocument ();<BR><BR>ASSERT_VALID (pDoc);<BR><BR>//Select blue brush into device context.<BR><BR>CBrush brush (RGB (0, 0, 255));<BR><BR>CBrush* pOldBrush=pDC->SelectObject (&brush);<BR><BR>//draw ellipse in tracking rectangle.<BR><BR>Crect rcEllipse;<BR><BR>pDoc->m_tracker.GetTrueRect (rcEllipse);<BR><BR>pDC->Ellipse (rcEllipse);<BR><BR>//Draw tracking rectangle.<BR><BR>pDoc->m_tracker.Draw (pDC);<BR><BR>//Select blue brush out of device context.<BR><BR>pDC->Selectobject (pOldBrush);<BR><BR>}<BR><BR>最后,使用ClassWizard处理WM_LBUTTONDOWN消息,并增加下述代码。该段代码根据鼠标击键情况可以拖放、移动或者重置椭圆的大小。<BR><BR>void CSampleView::OnLButtonDown (UINT nFlags, CPoint point)<BR><BR>{<BR><BR>//Get pointer to document.<BR><BR>CSampleDoc* pDoc=GetDocument ();<BR><BR>ASSERT_VALID (pDoc);<BR><BR>//If clicked on ellipse, drag or resize it. Otherwise create a<BR><BR>//rubber-band rectangle nd create a new ellipse.<BR><BR>BOOL bResult=pDoc->m_tracker.HitTest (point)!=<BR><BR>CRectTracker::hitNothing;<BR><BR>//Tracker rectangle changed so update views.<BR><BR>if (bResult)<BR><BR>{<BR><BR>pDoc->m_tracker.Track (this,point,TRue);<BR><BR>pDoc->SetModifiedFlag ();<BR><BR>pDoc->UpdateAllViews (NULL);<BR><BR>}<BR><BR>else<BR><BR>pDoc->m-tracker.TrackRubberBand (this,point,TRUE);<BR><BR>CView:: onLButtonDown (nFlags,point);<BR><BR>}<BR><BR> <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:不说 回复日期:2002-11-26 15:58:43
<br>内容:恩,的确是个好东西
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:无赖 回复日期:2002-11-26 16:26:55
<br>内容:可是我的图象都是用line to画出来的框和线的组合<BR>用这个类的话,它进行画图的时候有点出入啊<BR>新手:(不好意思了,麻烦讲详细咯:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -