Wieso kann ich ddas nicht so machen?

Silvercreast

Erfahrenes Mitglied
hallo

ich möchte gerne in meiner CListCtrl ein Gitternetz um meine Daten machen mit dem Aufruf:

Code:
m_ListCarPark.SetExtendedStyle(LVS_EX_GRIDLINES);

Wenn ich aber dahinter meinen Text markiere:
Code:
m_ListCarPark.SetExtendedStyle( LVS_EX_FULLROWSELECT);

dann gibt es kein Gitternetz.

Wenn ich die Aufrufe aber genau anders rum mache, gibt es ein Gitternetz, aber keine Markierung.

Wieso?
 
Das passiert deswegen, weil mit "SetExtendedStyle()" kein additatives Hinzufügen des neuen Styles erfolgt, sondern der Style auf den Wert des übergebenen Parameters gesetzt wird. Dadurch werden etwaige vorherige Einstellungen überschrieben.
Wenn man einen schon gesetzten Style nicht verlieren will, muss man den vorhandenen Style erst auszulesen und dann mit dem neuen Style verknüpfen:
Code:
m_ListCarPark.SetExtendedStyle(m_ListCarPark.GetExtendedStyle() | LVS_EX_GRIDLINES);
m_ListCarPark.SetExtendedStyle(m_ListCarPark.GetExtendedStyle() | LVS_EX_FULLROWSELECT);
Oder (sinnvollerweise) als einen einzigen Funktionsaufruf:
Code:
m_ListCarPark.SetExtendedStyle(m_ListCarPark.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
Wenn man auf etwaige vorhandene Styles keine Rücksicht nehmen will, braucht man natürlich den vorhandenen nicht auszulesen. Dann verwendet man den Code, den Panschev gepostet hat.
 
Zurück