Spaltentitel zur Laufzeit ändern



  • Moin Gemeinde,

    wie kann ich den Titel einer Spalte in einem CListCtrl zur Laufzeit ändern?

    m_myGrid.SetFocus();
    	if( !m_myGrid )
    		return;
    
    	LVCOLUMN col;
    	int cwWidth = m_myGrid.GetColumnWidth( column );  => OK
    	col.mask = LVCF_TEXT | LVCF_WIDTH;
    
    	m_myGrid.GetColumn( column, &col );  => Exception  :open_mouth: 
    	col.pszText = cTitle;
    	m_myGrid.SetColumn( column, &col );
    

    hab leider nichts passendes gefunden.

    Thx schonmal

    grüssle 🙂



  • MSDN - CListCtrl::GetColumn() schrieb:

    If the mask member specifies the LVCF_TEXT value, the pszText member must contain the address of the buffer that receives the item text and the cchTextMax member must specify the size of the buffer.

    --> Du mußt natürlich auch Platz bereitstellen, wo das List-Control den Titel eintragen kann, wenn du "LVCF_TEXT" angibst (aka - "ich will den Spaltennamen auslesen). Aber du willst ja nicht den Titel auslesen, sondern ändern.

    (und was hat das LVCF_WIDTH mit dem Problem zu tun?)



  • Ok, Buffer und Grösse. Wer kommt nur auf so was 😮 🙄

    Thx & grüssle 🙂



  • Smitty schrieb:

    Ok, Buffer und Grösse. Wer kommt nur auf so was 😮 🙄

    Bestimmt kein C++ Programmierer - ich hätte mit std::string oder CString anstelle der char-Zeiger gearbeitet, aber das kann man sich ja nicht aussuchen.

    Randfrage: Wozu rufst du eigentlich GetColumn() auf? Du willst doch nicht die aktuellen Werte der Spalte auslesen, sondern "nur" neue Werte setzen.



  • CStoll schrieb:

    Randfrage: Wozu rufst du eigentlich GetColumn() auf? Du willst doch nicht die aktuellen Werte der Spalte auslesen, sondern "nur" neue Werte setzen.

    war eigentlich mehr zum testen.

    grüssle 🙂


Anmelden zum Antworten