M
Ok, ich bin jetzt dabei das ganze selbst zu machen.
Durch Abfangen von OnMouseMove und Prüfung ob Linke Maustaste geklickt ist(MK_LBUTTON) bin ich jetzt soweit, das ich meine Controls in eine Richtung vergrößern/verkleinern kann.
Sprich ich vergrößere das 1.Element und verkleinere bzw. verschiebe gleichzeitig das 2. und das 3.
Nun möchte ich dies auch in die andere Richtung machen, sprich ich verkleinere das erste Element wieder und vergrößere bzw. verschiebe das 2. und 3.
Hatte gedacht, wäre ganz einfach. Merken der letzten Cursorposition und wenn die aktuelle kleiner als die gemerkte ist, dann alles umgekehrt machen.
Leider klappt es so nicht.
Hier mal die OnMouseMove von mir.
void CChildView::OnMouseMove(UINT nFlags, CPoint point)
{
CRect crContact, crSubject, crMessage;
HCURSOR hCurs;
int nDiff = 0;
CPoint curPoint, oldPoint;
GetCursorPos(&oldPoint);
m_wndContactView.GetWindowRect(&crContact);
m_wndSubjectView.GetWindowRect(&crSubject);
m_wndMessageView.GetWindowRect(&crMessage);
ScreenToClient(&crContact);
ScreenToClient(&crSubject);
ScreenToClient(&crMessage);
DWORD dwErr ;
HDWP hdwp = BeginDeferWindowPos(4);
if(hdwp == NULL)
dwErr = GetLastError();
//m_noldCursorPos = point.x;
if((point.x > crContact.right) && (point.x < crSubject.left)
&& (point.y >= crContact.top) && (point.y <= crContact.bottom))
{
hCurs = LoadCursor(NULL, IDC_SIZEWE);
SetCursor(hCurs);
if((nFlags & MK_LBUTTON) == MK_LBUTTON)
{
if(m_noldCursorPos == 0)
m_noldCursorPos = point.x;
if(crMessage.Width() > (m_nDefWidthMessageView / 3))
{
nDiff = point.x - crContact.right;
crContact.right = point.x;
crSubject.left += nDiff;
crSubject.right += nDiff;
crMessage.left += nDiff;
DeferWindowPos(hdwp, m_wndContactView.m_hWnd, NULL, crContact.left, crContact.top,
crContact.Width(), crContact.Height(), SWP_NOZORDER);
DeferWindowPos(hdwp, m_wndSubjectView.m_hWnd, NULL, crSubject.left, crSubject.top,
crSubject.Width(), crSubject.Height(), SWP_NOZORDER);
DeferWindowPos(hdwp, m_wndMessageView.m_hWnd, NULL, crMessage.left, crMessage.top,
crMessage.Width(), crMessage.Height(), SWP_NOZORDER);
m_noldCursorPos = point.x;
}
if(crSubject.Width() > (m_nDefWidthSubjectView / 3))
{
nDiff = point.x - crContact.right;
crContact.right = point.x;
crSubject.left += nDiff;
DeferWindowPos(hdwp, m_wndContactView.m_hWnd, NULL, crContact.left, crContact.top,
crContact.Width(), crContact.Height(), SWP_NOZORDER);
DeferWindowPos(hdwp, m_wndSubjectView.m_hWnd, NULL, crSubject.left, crSubject.top,
crSubject.Width(), crSubject.Height(), SWP_NOZORDER);
m_noldCursorPos = point.x;
}
}
}
else if((point.x > crSubject.right) && (point.x < crMessage.left)
&& (point.y >= crContact.top) && (point.y <= crContact.bottom))
{
if((nFlags & MK_LBUTTON) == MK_LBUTTON)
{
if(crMessage.Width() > (m_nDefWidthMessageView / 3))
{
nDiff = point.x - crSubject.right;
crSubject.right = point.x;
crMessage.left += nDiff;
DeferWindowPos(hdwp, m_wndContactView.m_hWnd, NULL, crContact.left, crContact.top,
crContact.Width(), crContact.Height(), SWP_NOZORDER);
DeferWindowPos(hdwp, m_wndSubjectView.m_hWnd, NULL, crSubject.left, crSubject.top,
crSubject.Width(), crSubject.Height(), SWP_NOZORDER);
DeferWindowPos(hdwp, m_wndMessageView.m_hWnd, NULL, crMessage.left, crMessage.top,
crMessage.Width(), crMessage.Height(), SWP_NOZORDER);
m_noldCursorPos = point.x;
}
}
hCurs = LoadCursor(NULL, IDC_SIZEWE);
SetCursor(hCurs);
}
else
{
hCurs = LoadCursor(NULL, IDC_ARROW);
SetCursor(hCurs);
}
EndDeferWindowPos(hdwp);
CFormView::OnMouseMove(nFlags, point);
}