CListCtrl
-
Hallo Leute!
Kann man während der Laufzeit das aussehen des CListCtrl ändern? Ich kann im Bericht Linien anzeigen lassen usw.(mit SetExtendedStyle(...)), aber wie kann ich von Bericht auf Liste oder Minisymbole umschalten?
Anscheinend muß ich jedesmal ein eigenes CListCtrl erstellen, denn bis jetzt konnte ich nur in Create mit LVS_LIST oder LVS_REPORT das Design ändern.
Hat jemand mehr Ahnung von CListCtrl (ausser Google usw. dort war ich schon
)?
Mfg, BigSigi
Edit:
Noch ein Problem!
Ich hab in der Ersten Spalte ein Icon. Damit jemand das Icon verändern kann, gebe ich ihm eine Auswahlliste. Mitm_iRatio = pList->GetItemState(index,LVIF_IMAGE);
wollte ich das eingetragene Icon auslesen. Ich bekomm aber immer nur eine 2 zurück. Weiß hier einer ne Antwort drauf?
-
BigSigi schrieb:
Noch ein Problem!
Ich hab in der Ersten Spalte ein Icon. Damit jemand das Icon verändern kann, gebe ich ihm eine Auswahlliste. Mitm_iRatio = pList->GetItemState(index,LVIF_IMAGE);
wollte ich das eingetragene Icon auslesen. Ich bekomm aber immer nur eine 2 zurück. Weiß hier einer ne Antwort drauf?
versuchs doch mal mit
LVITEM *pItem = new LVITEM; îf (pList->GetItem(pItem) != 0) // hat geklappt m_iRatio = pItem->iImage; else return; // oder irgend was anderes, um den Fehler abzufangen
Gruß WinCoder
-
Danke für deine Antwort!
Hab das ganze jetzt etwas anders gelöst,werd deinen Vorschlag
aber trotzdem morgen ausprobieren, denn für heute is schlußMfg, BigSigi
Achja: weiß über die este Frage keiner eine Antwort? Denn meine Ideen dazu sind dann doch nicht das gelbe vom Ei (denk ich halt)
*gähnsmili such*(Der geht auch! Hat am meisten ähnlichkeit mit meinen Augen
)
-
BigSigi schrieb:
Hat jemand mehr Ahnung von CListCtrl (ausser Google usw. dort war ich schon
)?
Schonmal bei MSDN-Library versucht??
Gruß WinCoder
-
Hallo BigSigi,
hab gleich selber mal gesucht!!
Hier das Ergebnis:[msdn]
Ändern der Formate eines Listen-Steuerelements
Anfang | Übersicht | BeispielSie können das Fensterformat eines Listen-Steuerelements (CListCtrl) jederzeit nach der Erstellung ändern. Wenn Sie das Fensterformat ändern, verändern Sie die Art der Ansicht, die das Steuerelement verwendet. Um z. B. den Windows Explorer zu emulieren, wollen Sie vielleicht Menübefehle oder Schaltflächen auf der Symbolleiste bereitstellen, um das Steuerelement zwischen verschiedenen Ansichten umzuschalten: Symbolansicht, Listenansicht usw.
Wählt der Benutzer beispielsweise Ihren Menübefehl, könnten SieGetWindowLong aufrufen, um das aktuelle Format des Steuerelements zu ermitteln und anschließend könnten SieSetWindowLong aufrufen, um das Format erneut einzurichten. Weitere Informationen finden Sie unterUsing List View Controls in der Dokumentation zum Plattform-SDK.
Die verfügbaren Formate, die Sie über den bitweisen ODER-Operator kombinieren können, werden inCreate aufgeführt. Die Formate LVS_ICON, LVS_SMALLICON, LVS_LIST und LVS_REPORT bezeichnen die vier Ansichten des Listen-Steuerelements.
[/msdn]Ich hoffe, das reicht!
Gruß WinCoder
-
Danke WinCoder!!!
CListCtrl *pList = (CListCtrl*)m_wndDialogBar.GetDlgItem(IDC_LIST1); long style = GetWindowLong(pList->m_hWnd,GWL_STYLE); SetWindowLong(pList->m_hWnd,GWL_STYLE, style | LVS_LIST);
So einfach kann das Leben sein
Von diesen Funktionen hab ich bis jetzt noch nie gehört.
Bis zum nächsten mal,
bye, BigSigi
-
Schon wieder ne Frage!
Ich kann die Spalten meines CListCtrl mit drag-and-drop neu anordnen und die Spaltenbreite verändern.
Wenn ich das Programm wieder öffne dann soll der zustand wiederhergestellt werden.
Das mit der Spaltenbreite geht bereits, aber woher erhalte ich die Info an welcher neuen Poition meine Spalte sich befindet? Denn angesprochen wird sie noch immer mit dem normalen Index. Logischerweise muß es noch eine Variable geben die die aktuelle Position beinhaltet. Wie krieg ich nun diesen Wert.
In der MSDN hab ich nur gefunden das es eine Erneuerung ist und wie man sie aktiviert.
Mfg, BigSigi
*laut um hilfe ruf* WinCoder
-
BigSigi schrieb:
In der MSDN hab ich nur gefunden das es eine Erneuerung ist und wie man sie aktiviert.
Lüg' nicht! In der MSDN steht alles!!!
Sogar in meiner, und die ist schon Asbach-uralt (von 98 oder so)Dein Problem steht hier:
MSDN Library Visual Studio 6.0
Visual C++ Dokumentation
Arbeiten mit Visual C++
Visual C++ Programmierhandbuch
Hinzufügen von Funktionen der Benutzeroberfläche
Details
Themen zu Steuerelementen
Verwenden von CListCtrl
Hinzufügen von Spalten zum Steuerelement (Berichtansicht)Dort steht unter anderem:
[msdn]Jede Spalte besitzt normalerweise ein Titel-Steuerelement (siehe CHeaderCtrl), das die Spalte beschriftet und dem Benutzer das Verändern der Spaltenbreite ermöglicht.[/msdn]Wenn du dann dem (hier fett markierten) Link zu CHeaderCtrl folgst, landest du nach wenigen Klicks bei:
MSDN Library Visual Studio 6.0
.....
Verwenden von CHeaderCtrl
Sortieren von Elementen im Titel-SteuerelementUnd dort kannst du dann lesen:
[msdn]Wenn Sie Elemente zu einem Titel-Steuerelement hinzugefügt
haben, können Sie sich über deren Anordnung informieren oder die Anordnung mit Hilfe der folgenden Funktionen ändern:CHeaderCtrl::GetOrderArray und CHeaderCtrl::SetOrderArray
Liest die Anordnung der Überschrift-Elemente (von rechts nach links) und stellt diese ein.CHeaderCtrl::OrderToIndex.
Liest den Indexwert für ein bestimmtes Überschrift-Element.Neben den bereits erwähnten Member-Funktionen erlaubt das HDS_DRAGDROP-Format dem Benutzer, Überschrift-Elemente innerhalb des Titel-Steuerelements zu ziehen und abzulegen. Weitere Informationen finden Sie unter Drag & Drop-Unterstützung für Überschrift-Elemente.[/msdn]
Ich hoffe, das hilft Dir weiter!
Gruß WinCoder!
-
Ich bin wohl zu Doof für die MSDN!
Danke dir für deine Hilfe!
Werd sofort Testen ob ich´s (heut noch) hinkrieg. Wenn nich dann meld ich mich eh wieder *schäm*
MFG, BigSigi
-
Ging ja besser und schneller als ich dachte.
THX, BigSigi