ListControl horizontal anordnen mit Icons



  • Das Control hier:

    ----------
    - -
    - X -
    - -
    - Y -
    - -
    - Z -
    ----------

    Soll dann so aussehen:

    |-------|-------|-------|
    | X.........Y.........Z....|
    |-------|-------|-------| (horizontal)


  • Mod

    Dann fehlt mir für jetzt eine weitere Idee.

    Ich habe mir das mal in meinem Code angesehen.
    Ich verwende dafür eine Ownerdraw Listbox...

    Alle anderen Implementierungen, die wie diese Outlookbars ausehen, die ich kenne, nutzen auch kein ListCtrl sondern sind Eigenkreationen.



  • Azubi11 schrieb:

    |-------|-------|-------|
    | X.........Y.........Z....|
    |-------|-------|-------| (horizontal)

    Versuche mal folgendes:

    ListView_SetView(hWndListView, LV_VIEW_ICON);
    ListView_SetExtendedListViewStyleEx(hWndListView, LVS_EX_SINGLEROW, LVS_EX_SINGLEROW);
    


  • Zumindest bei mir gibt es LVS_EX_SINGLEROW nicht unter Visual Studio 2003.
    Kann man diesen Style dennoch setzen?



  • #define LVS_EX_SINGLEROW        0x00040000
    

    Wird aber erst ab Windows XP unterstützt. Der Explorer verwendet diesen Stil für die Filmstreifen-Ansicht.



  • Hi sri,

    auch nach

    l_control.SetExtendedStyle(LVS_EX_SINGLEROW);
    

    bleibt leider die Auswahl nur von oben nach unten 😢
    Links nach rechts scheint wohl nicht ohne weiteres möglich zu sein.



  • Beim Setzen des erweiterten Stils mit SetExtentedStyle muss der gesamte erweiterte Stil angegeben werden, also so:

    l_control.SetExtendedStyle(l_control.GetExtendedStyle() | LVS_EX_SINGLEROW);
    

    Hast Du mal meine beiden Zeilen ausprobiert? Vorraussetzung ist auch ein Manifest für ComCtl32 v6, da beides erst ab Windows XP funktioniert.



  • Hallo sri,

    es hat damit leider keine Änderungen gegeben 😞



  • Schade, bei mir funktioniert es so wie von Dir gewünscht. 😞



  • ?? Dann mache ich irgendwas falsch in meinem Projekt!

    Hast du die Möglichkeit ein Testprojekt online zu stellen,
    damit ich es mal mit meinem Code vergleichen kann?

    Thx
    Azubi11 😃



  • Ich habe mit VS 2008 eine Beispielanwendung erstellt (Doc/View mit CListView) und bei CSingleRowView::OnInitialUpdate folgende Zeilen eingefügt:

    TCHAR szSystemDir[MAX_PATH];
    	GetSystemDirectory(szSystemDir, _countof(szSystemDir));
    
    	SHFILEINFO sfi = { 0 };
    	HIMAGELIST hImageList = reinterpret_cast<HIMAGELIST>(SHGetFileInfo(szSystemDir, 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX | SHGFI_LARGEICON));
    
    	ListView_SetImageList(GetListCtrl(), hImageList, LVSIL_NORMAL);
    
    	ListView_SetView(GetListCtrl(), LV_VIEW_ICON);
    	ListView_SetExtendedListViewStyleEx(GetListCtrl(), LVS_EX_SINGLEROW, LVS_EX_SINGLEROW);
    
    	for (int iCount = 0; iCount < 20; iCount++)
    	{
    		CString strName; strName.Format(_T("Item %ld"), iCount);
    		GetListCtrl().InsertItem(iCount, strName, sfi.iIcon);
    	}
    

    Download: http://rapidshare.de/files/39098645/SingleRow.zip.html



  • Juhu vielen Dank für dein Beispiel. Jetzt hat es "geschnackelt" und ich
    habe es hinbekommen 👍 👍


Anmelden zum Antworten