Soll ein Eintrag programmgesteuert markiert, bzw. seine Markierung aufgehoben werden, dann benutzt man dazu die Nachricht "LB_SETSEL". Als zweiter Parameter wird dabei der Index des gewünschten Eintrags angegeben, während der erste Parameter den gewünschten Status (true, false) enthält. Zu beachten ist auch hier wieder, dass der Bool-Wert in einen Integer konvertiert werden muss. Als Beispiel soll gezeigt werden, wie man den dritten Eintrag einer Listbox markieren kann:
SendMessage(hwndListbox, LB_SETSEL, WPARAM(true), 2);
Die Prozedur "SelAll" des Beispielprogramms demonstriert das Markieren aller Einträge der Listbox.
Anzumerken ist aber, dass "LB_SETSEL" nur für eine Listbox gilt, in der man mehrere Einträge gleichzeitig auswählen kann.
Für die typischen Listboxen, die nur die Auswahl eines einzigen Items erlauben, muss die Nachricht "LB_SETCURSEL" benutzt werden. Hierbei geben Sie den gewünschten Index im wParam an, während der lParam nicht genutzt wird und Null bleibt:
SendMessage(hwndSimpleLB, LB_SETCURSEL, 2, 0);
Mit dem wParam-Wert -1 können Sie hier die Auswahl aufheben.