WEB开发网
开发学院软件开发VC 智能连接线 阅读

智能连接线

 2007-03-17 21:58:51 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 一、经常使用Microsoft visio画流程图,觉得其中的智能连接线非常好用,智能连接线,可以手动调节,非常灵活,所以自己写了一个同样功能的类,拖动线的两端可以改变线的长度,拖动两条线的节点,图一 连接线二、步骤1.创建一个工程,基于文档视图结构的(单文档、多文档都可以)2.添加文

本文示例源代码或素材下载

一、经常使用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.添加OnLButtonDownvoid 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.添加OnSetCursorBOOL 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.添加OnDrawvoid 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.拖动线中间的的点可以移动整条线,拖动线的两端可以改变线的长度,拖动两条线的节点,可以改变两条线的长度和位置。

Tags:智能 连接线

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接