In einer Win32-Anwendung Ich habe einen Dialog mit einer Liste Steuerung, die die Dialogvorlage definiert:Wie wird ein Listensteuerelement als ausgewählt markiert?
CONTROL "",IDC_LIST_Attributes,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,36,246,110
In der Laufzeit ich den Griff zu dieser Kontrolle abrufen und verschiedene Operationen mit ihm durchführen - entfernen Sie alle Artikel, Artikel hinzufügen usw. Es funktioniert gut.
Das Problem ist, dass ich ein Element nicht programmgesteuert als ausgewählt markieren kann. Ich verwende den folgenden Code für das:
LVITEM lvItem;
lvItem.stateMask = stateMask;
lvItem.state = state;
SendMessage(windowHandle, LVM_SETITEMSTATE, indexToSelect, (LPARAM)&lvItem);
dieser Code ausgeführt wird und keine Änderungen passieren in die Liste Kontrolle. wenn ich Gegenstände mit der Maus anklicke, sind sie richtig ausgewählt. Was vermisse ich?
Versucht gerade jetzt - das gleiche Problem. Tatsächlich expandiert es sogar in gleichwertigen Quellcode. – sharptooth
Nun, mit dem Stil-Set wurde es besser - die Auswahlleiste zumindest beibehalten. Aber als ich die aktuelle Auswahl (LVM_GETSELECTIONMARK) abgerufen habe, gab es CB_ERR (keine Auswahl) zurück. Also ändere ich den Status des Elements und sende LVM_SETSELECTIONMARK. Jetzt funktioniert es wie benötigt. – sharptooth