一、經常使用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.拖動線中間的的點可以移動整條線,拖動線的兩端可以改變線的長度,拖動兩條線的節點,可以改變兩條線的長度和位置。
本文配套源碼