tagging release
[dasher.git] / Src / Win32 / Widgets / Splitter.cpp
blobae2d0314659f02cf5d22ddde0f49bcc5fcade518
1 // Splitter.cpp
2 //
3 /////////////////////////////////////////////////////////////////////////////
4 //
5 // Copyright (c) 2002 Iain Murray, Inference Group, Cavendish, Cambridge.
6 //
7 /////////////////////////////////////////////////////////////////////////////
9 #include "WinCommon.h"
10 #include "Splitter.h"
12 // For WinCE
13 #ifndef MAKEPOINTS
14 #define MAKEPOINTS(l) (*((POINTS FAR *) & (l)))
15 #endif
17 /////////////////////////////////////////////////////////////////////////////
19 CSplitter::CSplitter(CSplitterOwner* pOwner, int iPos)
20 : m_SplitStatus(None), m_iPos(iPos), m_pOwner(pOwner)
25 /////////////////////////////////////////////////////////////////////////////
27 HWND CSplitter::Create(HWND hParent)
29 return CWindowImpl<CSplitter>::Create(hParent,NULL,NULL,WS_CHILD | WS_VISIBLE);
32 /////////////////////////////////////////////////////////////////////////////
34 void CSplitter::Move(int iPos, int Width)
36 m_iPos = iPos;
37 MoveWindow(0, m_iPos, Width, GetSystemMetrics(SM_CYSIZEFRAME), TRUE);
40 /////////////////////////////////////////////////////////////////////////////
42 LRESULT CSplitter::OnLButtonDown(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
44 bHandled = TRUE;
45 m_SplitStatus = Sizing;
46 SetCapture();
47 return 0;
50 /////////////////////////////////////////////////////////////////////////////
52 LRESULT CSplitter::OnLButtonUp(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
54 bHandled = TRUE;
55 if( m_SplitStatus == Sizing)
57 m_SplitStatus = None;
58 ReleaseCapture();
60 return 0;
63 /////////////////////////////////////////////////////////////////////////////
65 LRESULT CSplitter::OnMouseMove(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
67 bHandled = TRUE;
68 POINTS Tmp = MAKEPOINTS(lParam);
69 POINT MousePos;
70 MousePos.x = Tmp.x;
71 MousePos.y = Tmp.y;
72 MapWindowPoints( GetParent(), &MousePos, 1);
74 if( m_SplitStatus == Sizing)
76 RECT ParentRect, MyRect;
77 ::GetWindowRect( GetParent(), &ParentRect);
78 GetWindowRect(&MyRect);
79 m_iPos = MousePos.y - GetSystemMetrics(SM_CYSIZEFRAME) / 2;
80 // Layout();
81 m_pOwner->Layout();
83 return 0;
85 /////////////////////////////////////////////////////////////////////////////