ClipCursor bei Mausbewegung

Hi an alle,

ich zermatere mir schon den ganzen tag das Hirn wie ich es mit ClipCursor in OnMouseMove und allem hinbekomme, das ich bei geklickter linker Maustaste und Mausbewegung den Effekt hinbekomme wie z.B. im Windows Explorer, wenn ich zwischen der Baumansicht(links) und der Liste(rechts) die Größe modifiziere.

Mein Problem ist, dass der Cursor sich halt an einer Position festfrisst und dann nicht mehr mitbekommt wenn ich wieder in die andere Richtung gehe.

Hier mal etwas von meinem Code

if(m\_bIsPressed) 
{ 
 //Bewegung nach rechts 
 if(point.x \> m\_noldCursorPos) 
 { 
 if(crSubject.Width() \> (m\_nDefWidthSubjectView / 2)) 
 { 
 nDiff = point.x - crContact.right; 
 crSubject.SetRect(crSubject.left + nDiff, crSubject.top, crSubject.right, crSubject.bottom); 
 m\_wndSubjectView.MoveWindow(&crSubject); 
 crContact.SetRect(crContact.left, crContact.top, crContact.right + nDiff, crContact.bottom); 
 m\_wndContactView.MoveWindow(&crContact); 
 ClientToScreen(&crContact); 
 ClientToScreen(&crSubject); 
 crClickArea.left = crContact.right; 
 crClickArea.right = crSubject.left; 
 crClickArea.top = crContact.top; 
 crClickArea.bottom = crContact.bottom; 
 ClientToScreen(&point); 
 ScreenToClient(&point); 
 if(!ClipCursor(&crClickArea)) 
 dwErr = GetLastError(); 
 ScreenToClient(&crContact); 
 ScreenToClient(&crSubject); 
 } 
 } 
 //Bewegung nach Links 
 else if(point.x (m\_nDefWidthContactView / 2)) 
 { 
 nDiff = point.x - crSubject.left; 
 crSubject.SetRect(crSubject.left + nDiff, crSubject.top, crSubject.right, crSubject.bottom); 
 m\_wndSubjectView.MoveWindow(&crSubject); 
 crContact.SetRect(crContact.left, crContact.top, crContact.right + nDiff, crContact.bottom); 
 m\_wndContactView.MoveWindow(&crContact); 
 ClientToScreen(&crContact); 
 ClientToScreen(&crSubject); 
 crClickArea.left = crContact.right; 
 crClickArea.right = crSubject.left; 
 crClickArea.top = crContact.top; 
 crClickArea.bottom = crContact.bottom; 
 if(!ClipCursor(&crClickArea)) 
 dwErr = GetLastError(); 
 ScreenToClient(&crContact); 
 ScreenToClient(&crSubject); 
 } 
 } 
} 

Ich weiß nicht was ich falsch mache.

In google kann ich leider nichts genaues finden.

Gruß

Hallo

Du hast die ClipCursor() zweimal aufgerufen, aber nie mit Argument NULL statt des RECT’s. Genau das würde es aber brauchen, damit das arme Tierchen wieder befreit wird.

Ein Blick ins MSDN über ClipCursor() kann da Wunder wirken:

Parameters

lprc

... If this parameter is NULL, the cursor is free to move 
anywhere on the screen. 

Mein Problem ist, dass der Cursor sich halt an einer Position
festfrisst

s.o.

lG
Martin B