Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2086848
  • 博文数量: 909
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 12260
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-06 20:50
文章分类

全部博文(909)

文章存档

2008年(909)

我的朋友

分类:

2008-05-06 22:41:56

一起学习
智能连接线

作者: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.拖动线中间的的点可以移动整条线,拖动线的两端可以改变线的长度,拖动两条线的节点,可以改变两条线的长度和位置。
下载本文示例代码


智能连接线智能连接线智能连接线智能连接线智能连接线智能连接线智能连接线智能连接线智能连接线智能连接线智能连接线智能连接线
阅读(406) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~