| Autor |
Nachricht |
SysListView
Unregistrierter
|
SysListView Unregistrierter
10:43:44 08.06.2012 Titel: |
SysListView32 - select item |
Zitieren |
Hallo Leute,
ich habe ein Problem beim Auswählen einer Zeile einer ListView Form. Ich habe einige Befehle gefunden, doch mit keinem konnte ich eine Zeile markieren...
Bei meiner Suche habe ich das hier gefunden:| C++: | //selectieren
ListView_SetItemState(hWndLV, nIndex, LVIS_SELECTED, LVIS_SELECTED);
//deselectieren
ListView_SetItemState(hWndLV, nIndex, 0, LVIS_SELECTED); | |
Leider funktioniert das bei mir nicht. Für kurze Zeit hatte es beim MediaPlayer funktioniert, doch jetzt geht es dort auch nicht mehr
Ich habe gesehen, dass es bei meinem Taskmanager (Anwendungs/Prozessansicht...) ebenfalls nicht funktioniert. Falls es von eurer Seite Lösungsvorschläge gibt, wäre es gut, wenn es zumindest im Taskmanager funktioniert, da die ListView dem in meinem Programm ähnelt.
Für den Fall, dass es wichtig ist: Betriebssystem ist Win7 32Bit
Gruß, Waschbär |
|
|
|
 |
SysListView
Unregistrierter
|
SysListView Unregistrierter
11:06:29 08.06.2012 Titel: |
|
Zitieren |
Nachtrag:
Nach einem Neustart funktioniert nun immerhin das selectieren sowohl im MediaPlayer als auch im Taskmanager.
Deselectieren geht weiterhin nicht... Und nach einem LVIS_FOCUSED bekomme ich den Focus nicht mal mehr mit der Maus weg -.-' |
|
|
|
 |
SysListView
Unregistrierter
|
SysListView Unregistrierter
00:36:41 18.06.2012 Titel: |
|
Zitieren |
Hmm, scheint nur bei mir ein Problem zu sein... Nun ja, für den Fall, dass noch andere auf ähnliche Probleme stoßen, hier mein Weg:
| C++: | // aktivieren und selectieren der Form mit der linken Maustaste
SendMessage(listview, WM_MOUSEACTIVATE, (WPARAM)parent, (LPARAM)((WM_LBUTTONDOWN<<16)+HTCLIENT));
SendMessage(listview, WM_SETCURSOR, (WPARAM)parent, (LPARAM)((WM_LBUTTONDOWN<<16)+HTCLIENT));
// mit der linken Maustaste auf den ersten Eintrag (Pixel (10|10) klicken
PostMessage(listview, WM_LBUTTONDOWN, 0, (LPARAM)(10<<16)+(10)); | |
In den paar Zeilen klicke ich nur den ersten Eintrag an. Ich hatte versucht, mit LVM_GETITEMRECT die Koordinaten der anderen Einträge herauszubekommen, doch auch da hat sich mein PC quergestellt.
| C++: | 1 2 3 4 5 6 7 8 9 10 11 | RECT position;
LRESULT ergebnis;
ergebnis = SendMessage(child, LVM_GETITEMCOUNT, 0, 0);
printf("%i ", (int)ergebnis);
position.left = position.top = position.right = position.bottom = LVIR_ICON;
ergebnis = SendMessage(child, LVM_GETITEMRECT, 1, (LPARAM)&position);
printf("%i - %lu %lu %lu %lu\n", (int)ergebnis, position.left, position.right, position.top, position.bottom);
// Ausgabe: 1 1 - 1 1 1 1, also 1 Element vorhanden, erfolgreiches Senden, aber keine Koords... | |
Spy++ hat beide Nachrichten korrekt angezeigt und in der letzten Antwort stehen auch die korrekten Koords (0 24 1260 44) des ersten Eintrages der ListView drin, nur in meinem Programm kann ich einfach nicht drauf zugreifen... Habe keinen Schimmer, woran das liegt... Wahrscheinlich funktioniert deswegen der einfache Weg aus Post 1 auch nicht.
Falls es noch ein paar Hinweise/Anregungen gibt, immer her damit. Ansonsten danke fürs lesen ^^
Gruß vom Waschbärn |
|
|
|
 |
_Luckie
Unregistrierter
|
_Luckie Unregistrierter
13:55:14 18.06.2012 Titel: |
|
Zitieren |
|
 |
SysListView
Unregistrierter
|
SysListView Unregistrierter
01:32:01 27.06.2012 Titel: |
|
Zitieren |
Hi Luckie,
danke für den Tipp!!! Es fiel mir schwer, deinen Link nach C zu übersetzen, doch mit den Stichworten von dir habe ich eine gute Seite gefunden. Ich habe etwas gebraucht, bis ich den Code verstanden habe, doch nun ist es mir endlich gelungen, den Text eines Items aus der ListView auszulesen (die Koords kommen auch bald)
Hier die Anleitung: http://www.codeproject.com/Articles/5570/Stealing-Program-s-Memory
Vielen Dank für die Hilfe,
Gruß, Waschbär |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|