Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Standardmäßig ordnet alle Elemente eines Listensteuerelements in einer standardmäßigen weise Raster an.Es wird jedoch eine andere Möglichkeit, Arbeitsbereiche unterstützt, die die Listenelemente in rechteckige Gruppen anordnet.Für das Bild eines Listensteuerelements mit Arbeitsbereichen implementiert, finden Sie unter Using Listenansicht-Steuerelementen in Windows SDK.
Hinweis |
|---|
Arbeitsbereiche sind nur sichtbar, wenn das Listensteuerelement ein kleines Symbol im Symbol oder im Modus befindet.Es werden alle aktuellen Arbeitsbereiche beibehalten, wenn die Ansicht in das Berichts- oder Listen Modus gewechselt wird. |
Arbeitsbereiche können verwendet werden, um einen leeren Bereich anzuzeigen (links, oben und/oder rechts von den Elementen), oder führen Sie eine horizontale Bildlaufleiste angezeigt wird, als würde es normalerweise keine geben.Eine weitere allgemeine Verwendung besteht darin, mehrere Arbeitsbereiche erstellen, auf die Elemente verschoben oder gelöscht werden können.Mit dieser Methode können Sie Bereiche in einer einzigen Sicht erstellen, die unterschiedliche Bedeutungen haben.Der Benutzer kann dann die Elemente kategorisieren, indem er sie in einem anderen Bereich eingefügt.Ein Beispiel hierfür ist eine Ansicht eines Dateisystems sein, das einen Bereich für Datei mit Lese-/Schreibzugriff und einen anderen Bereich für schreibgeschützte Dateien verfügt.Wenn eine Datei element in den schreibgeschützten Bereich verschoben wurden, wird es automatisch schreibgeschützt sind.Das Verschieben einer Datei im schreibgeschützten Bereich in den Bereich mit Lese-/Schreibzugriff lese-/schreibzugriff Datei wird.
CListCtrl stellt eine Reihe von Memberfunktionen zum Erstellen und Verwalten von Arbeitsbereichen im Listensteuerelement bereit.GetWorkAreas und SetWorkAreas Abrufen und legen ein Array CRect-Objekte (oder RECT-Strukturen) fest, die die derzeit implementierten Arbeitsbereiche für Ihr Listensteuerelement speichern.Außerdem ruft GetNumberOfWorkAreas die aktuelle Anzahl von Arbeitsbereichen für Ihr Listensteuerelement ab (standardmäßig null).
Elemente und Arbeitsbereiche
Wenn ein Arbeitsbereich erstellt wird, werden Elemente, die sich innerhalb des Arbeitsbereichs Member, liegen.Auch wenn ein Element in einen Arbeitsbereich verschoben wird, wird er ein Member des Arbeitsbereichs, für den es verschoben wurde.Wenn ein Element nicht innerhalb eines Arbeitsbereichs befindet, wird es automatisch ein Member des ersten (Index 0) Arbeitsbereichs.Wenn Sie ein Element erstellen und es in einem bestimmten Arbeitsbereichs einfügen lassen möchten, müssen Sie das Element erstellen und es in den gewünschten Arbeitsbereich mit einem Aufruf an SetItemPosition dann verschieben.Im Folgenden zweiten Beispiel wird dieses Verfahren.
Im folgenden Beispiel implementiert vier Arbeitsbereiche (rcWorkAreas), derselben Größe mit einem Pixel-weiten Rahmen 10 um jeden Arbeitsbereich in einem Listensteuerelement (m_WorkAreaListCtrl).
CSize size;
size = m_WorkAreaListCtrl.ApproximateViewRect();
size.cx += 100;
size.cy += 100;
CRect rcWorkAreas[4];
rcWorkAreas[0].SetRect(0, 0, (size.cx/2) - 5, (size.cy/2) - 5);
rcWorkAreas[1].SetRect((size.cx/2) + 5, 0, size.cx, (size.cy/2) - 5);
rcWorkAreas[2].SetRect(0, (size.cy/2) + 5, (size.cx/2) - 5, size.cy);
rcWorkAreas[3].SetRect((size.cx/2) + 5, (size.cy/2) + 5, size.cx, size.cy);
//set work areas
m_WorkAreaListCtrl.SetWorkAreas(4, rcWorkAreas);
Der Aufruf von ApproximateViewRect wurde vorgenommen, um eine Schätzung der Gesamtfläche abzurufen, die derzeit zur Beschreibung aller Elemente in einem Bereich angezeigt.Diese Schätzung wird dann in vier Bereiche unterteilt und aufgefüllt mit einem Pixel-weiten Rahmen 5.
Im folgenden Beispiel wird jeder Gruppe (rcWorkAreas) die vorhandenen Listenelemente zu und aktualisiert die Steuerelementansicht (m_WorkAreaListCtrl), um den Effekt zu vervollständigen.
// set insertion points for each work area
CPoint rgptWork[4];
for (int i = 0; i < 4; i++)
{
rgptWork[i].x = rcWorkAreas[i].left + 10;
rgptWork[i].y = rcWorkAreas[i].top + 10;
}
// now move all the items to the different quadrants
for (int i = 0; i < 20; i++)
{
m_WorkAreaListCtrl.SetItemPosition(i, rgptWork[i % 4]);
}
// force the control to rearrange the shuffled items
m_WorkAreaListCtrl.Arrange(LVA_DEFAULT);
Hinweis