ListControl horizontal anordnen mit Icons



  • 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