Frage

Ich möchte CListCtrl.EditLabel () für jede Spalte der Liste haben. Wie kann ich ein solches Feature implementieren?

War es hilfreich?

Lösung

Das ist machbar, aber es erfordert ein gutes Stück von Füllung herum mit Mausklicks und konzentriert Ereignisse.

Auf den Punkt gebracht Sie fangen die linke Maustaste Nachricht nach unten und es umwandeln in eine Zelle Details treffen (das heißt eine Zeile und Spalte Index).

Mit diesen Zell Details, die Sie nicht die Größe und Lage der Listenansicht Zelle bestimmen und auch den Textwert, die es enthält.

Jetzt eine CEdit Steuerelement erstellen direkt über diese Zelle unter Verwendung von Größe und Lage Details aus dem vorherigen Schritt und gibt ihm den Textwert der Zelle.

Der letzte Schritt ist der Fokus und die Tastatur eingeben Ereignisse für die CEdit zu handhaben, so dass die Textdaten von CEdit zurück in die Listenansicht Zelle gesetzt werden.

Es dauert eine ganze Menge Codierung, aber wenn es richtig gemacht, es gut zu einem Grid-Control als Alternative funktioniert.

Andere Tipps

Sie mit CListCtrl nicht versuchen.

Mit dem MFC Grid Control . Wir setzen es in einem Off-the-shelf-App mit Erfolg. Es bietet in-place bearbeiten, Checkbox, Spin, usw. für alle Zellen, sowie Spalten- und Zeilenüberschriften, Auto-Größe, Auto-erweitern, Farben, Drag & Drop.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top