背景: #EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  
阅读新闻

智能连接线

[日期:2008-09-24] 作者:william.ma [字体: ]

智能连接线

作者:william.ma

源代码下载

一、经常使用Microsoft visio画流程图,觉得其中的智能连接线非常好用,可以手动调节,非常灵活,所以自己写了一个同样功能的类。


图一 连接线

二、步骤
1.创建一个工程,基于文档视图结构的(单文档、多文档都可以)
2.添加文件SmartLines.h到工程
3.在要显示连接线的视图中包含SmartLines.h

	  ...
	  
#include "SmartLines.h"
...
4.拷贝SmartLines.dll和SmartLines.lib到工程文件夹
5.在输入库列表中添加SmartLines.lib导入库

图二 工程设置

6.在要显示连接线的视图中添加一个CSmartLines的成员变量
	  CSmartLines m_lines;
	  

7.添加OnLButtonDown
void CTestSmartLinesView::OnLButtonDown(UINT nFlags, CPoint point) 
      {
	       // TODO: Add your message handler code here and/or call default

            m_lines.Track(this,point);
	        CScrollView::OnLButtonDown(nFlags, point);
      }
	  

8.添加OnSetCursor
BOOL CTestSmartLinesView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
      {
	       // TODO: Add your message handler code here and/or call default
	       if (m_lines.OnSetCursor(pWnd, nHitTest))
	       {
		       return TRUE;
	       }
	       return CScrollView::OnSetCursor(pWnd, nHitTest, message);
      }
	  

9.添加OnDraw
void CTestSmartLinesView::OnDraw(CDC* pDC)
      {
	      CTestSmartLinesDoc* pDoc = GetDocument();
	      ASSERT_VALID(pDoc);
	      // TODO: add draw code for native data here

	      m_lines.Draw(pDC);
      }
	  

三、说明
1.在view的构造函数里初始化了6条线,可以添加任意多条,注意添加线首尾的point要一致。
2.平行的线只能上下移动,垂直的线只能左右移动。
3.拖动线中间的的点可以移动整条线,拖动线的两端可以改变线的长度,拖动两条线的节点,可以改变两条线的长度和位置。
阅读:
打印
相关新闻       相关关键词: