2009-10-27 5 views
5

Zuerst, was ich will: Die Fähigkeit, ein Raster mit mehreren Spalten anzuzeigen, jede Zelle hat einen benutzerdefinierten Rückruf Rendern. Sie können also ein solches Steuerelement verwenden, um Ihr Inventar in einem Spiel anzuzeigen, oder so etwas wie das Verhalten in Google Chrome, wo es ein Raster beliebter Seiten anzeigt, die Sie besuchen.Hat MFC eine integrierte Rastersteuerung?

Ich habe mit CListCtrl gespielt und während ich benutzerdefinierte Rendering-Fähigkeit für jedes Element bekommen kann, kann ich es nicht mit Spalten arbeiten - sagen 3 Elemente pro Zeile. Das Steuerelement hat spaltenbezogene Methoden, aber ich denke, diese sind speziell für die integrierte Funktionalität, wo verschiedene Attribute eines Elements automatisch in jeder Spalte angezeigt werden ... nicht für ein generisches Gitter-Steuerelement.

Gibt es solche Funktionalität in MFC? Wenn nicht, dann frage ich mich, ob es am einfachsten ist, wenn ich jede Zeile als Objekt einfüge ... und dann zeichnet das benutzerdefinierte Rendering die mehreren Zellen in der Zeile. Ich könnte auch benutzerdefinierte UI verwenden, um das Klicken auf die Zellen zu unterstützen .

Aber was ich wirklich will, ist in der Lage, ein benutzerdefiniertes Steuerelement zu erstellen, und fügen Sie dies als ein Element zu einer Liste - wie in Flex zum Beispiel - so I/O etc wird automatisch behandelt.

Jede Beratung/Information willkommen ...

Antwort

2

Ich bin mir nicht bewusst, eine eingebaute Kontrolle, aber ich denke, Sie einen Blick auf this nehmen sollte. Der Artikel beschreibt detailliert die Funktionalität eines voll funktionsfähigen MFC-Grid-Steuerelements, das von CWnd abgeleitet wurde, um tabellarische Daten anzuzeigen.

+0

Ich bin auf diese Kontrolle gestoßen; Es scheint, dass es wahrscheinlich das tut, was man will, aber es könnte ein Kampf sein, es in unser Projekt zu bekommen. –

+0

Kein Schmerz, kein Gewinn – luvieere

+0

Ich benutze dies in einer kommerziellen App. Die Bereitstellung ist einfach. Es gab ein paar subtile Edge-Case-Bugs, die wir beheben mussten. Insgesamt eine großartige Kontrolle und vollständig anpassbar - Sie haben die Quelle. –

1

YOUR_LIST_CONTROL .SetExtendedStyle (LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP | LVS_EX_GRIDLINES);

Ich denke, es wird Ihnen helfen