Über welchem Control befindet sich die Maus?
-
Hey @all,
kann man irtgendwie aus dem lParam bzw. wParam herausfindeauf welchem Control ich mich gerade mit der Maus befinde?
Würde das für meine 2 Treeviews benötigen, da ich eine "Unhandled Exception" bekomme wenn ich ausserhalb mit dem Mauscursor herum fahre.
lg _freeze_
-
Also ja ka warum du ein "Unhandled Exception" bekommst. Aber wenn du wissen möchtest über welchem control du dich befindest kannst du die Controls Subclassen und WM_MOUSEMOVE auswerten. Subclassen siehe http://www.winapi.net/index.php?inhalt=s27
schirrmie
-
es gibt sicherlich auch WinAPI Funktionen, die eine Cursor Position erwarten und von dem darunterligendem Fenster das Handle liefern
-
Danke vielmals, aber so wird das nix...
Kann mir jemand erklären wie ich das am besten lösen kann?
Ich habe 2 Treeviews (IDC_TREE1 => Links und IDC_TREE2 => Rechts)
nun möchte ich items zwischen den beiden hin und her ziehen.Dazu reagiere ich auf WM_LBUTTONUP und WM_MOUSEMOVE wie folgt:
case WM_NOTIFY: { switch(LOWORD(wParam)) { case IDC_TREE1: { switch (((LPNMHDR) lParam)->code) { case TVN_BEGINDRAG: { Main_OnBeginDrag(hTree1, (LPNMTREEVIEW)lParam); ShowCursor(TRUE); } break; } case IDC_TREE2: { switch (((LPNMHDR) lParam)->code) { case TVN_BEGINDRAG: { Main_OnBeginDrag(hTree2, (LPNMTREEVIEW)lParam); ShowCursor(TRUE); } break; } } } } case WM_LBUTTONUP: { if(g_fDragging) { Main_OnLButtonUp(hTree1); Main_OnLButtonUp(hTree2); } } case WM_MOUSEMOVE: { Pos = MAKEPOINTS(lParam); Main_OnMouseMove(hDlg, hTree1, Pos.x, Pos.y); Main_OnMouseMove(hDlg, hTree2, Pos.x, Pos.y); }Ich schätze das Problem liegt bei den doppelten Main_OnLButtonUp bzw. Main_OnMouseMove, nur wie löse ich das Problem am besten?
Mit dem Subclassen funktioniert es leider auch nicht. Bitte um Hilfe, bin schon etwas am verzweifeln

Vielen dank im Voraus
Lg _freeze_
-
-
Danke vielmals, so funktionierts

nur noch eine andere Frage, wieso geht das Drag-image nicht ins andere Treeview Fenster? Bei ImageList_DragMove bekomme ich auf einmal einen minus wert (point.x) und das bild fängt auf der anderen Seite an.
Habe mich schon herumgespielt, aber das Drag-Image bleibt nur in dem Fenster von dem aus ich die TVN_BEGINDRAG Nachricht ausgelöst habe.
lg _freeze_
-
Kann mir dir Frage bitte noch jemand beantworten?
Vielen Dank im Voraus
lg _freeze_
