Veröffentlicht 6. Juli 200421 j Hallo Leute, ich habe ein CListCtrl-Feld in meinem Dialog mit Bericht-Ansicht. Ich möchte den Eintrag in der ersten Spalte editieren. Im Moment sieht es so aus: void C[Programm]Dlg::OnLvnItemActivateList2Buch(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMIA = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); //Aktiviert das Editfeld nach Doppelklick auf das Item m_cBuch.EditLabel(m_cBuch.GetSelectionMark()); *pResult = 0; }//end void Ich gebe einen neuen Text ein und drücke Enter. Der Inhalt ändert sich nicht. In der MSDN hat auch nichts weiter gestanden.
6. Juli 200421 j EditLabel tut nichts weiter, als ein Eingabefeld zum Editieren anzuzeigen. Den Text im ListControl musst du schon selbst ändern. Als erstes musst du dazu die Nachricht abfangen, die gesendet wird, wenn der Benutzer das Editieren beendet: LVN_ENDLABELEDIT.
7. Juli 200421 j Autor Ich habe es gestern selbst mit viel experimentieren herausbekommen: //Das Editfeld wird auf dem markierten Item erstellt, wenn auf das Item doppelt geklickt wurde void [Projekt]Dlg::OnLvnItemActivateList2(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMIA = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); m_cList.EditLabel(m_cList.GetSelectionMark()); *pResult = 0; }//end void //Nachdem Enter gedrückt wurde, wird der Inhalt des Editfeldes ausgelesen und dem Item als neuer Text zugewiesen void [Projekt]Dlg::OnLvnEndlabeleditList2(NMHDR *pNMHDR, LRESULT *pResult) { NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR); CString Text; CEdit *pEdit=m_cList.GetEditControl(); pEdit->GetWindowText(Text); m_cList.SetItemText(m_cList.GetSelectionMark(), 0, Text); *pResult = 0; }//end void
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.