ListView



  • Hallo,

    ich habe heute mal ein Anliegen zu einem ListView. Einerseits kann es sein, dass der ListView erst ab WIN XP unterstützt wird? Zumindest steht bei mir in der MSDN unter LVITEM "Minimum operating systems Windows XP". Andererseits sind die ListView Funktionen schon älter.

    Dann noch eine praktische Frage, wie bekomme ich Items in die zweite, oder dritte Spalte? Hier mal mein Code, samt Ergebnis:

    www.cyriq.info/ebay/2.jpg

    LVCOLUMN    Spalte ;
                    Spalte.mask     = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT ;
                    Spalte.fmt      = LVCFMT_LEFT ;
        LVITEM      Item ;
                    Item.iSubItem   = 0;
                    Item.stateMask  = 0;
                    Item.mask       = LVIF_TEXT;
                    Item.cchTextMax = MAX_PATH;
        int         index ;
    
        for (index = 0; index < 5; index++)
        {
            char HeaderText[]   = "Test" ;
            int  Spaltenbreite  = 100 ;
            Spalte.cx           = Spaltenbreite ;                      
            Spalte.pszText      = HeaderText ;
            Spalte.cchTextMax   = sizeof(HeaderText) ;
            ListView_InsertColumn ( HwndListView, index, &Spalte ) ;
        }
    
        for (index = 0; index < 5; index++)
        {
            Item.iItem = index;
            Item.pszText = "Das ist ein";
            ListView_InsertItem(HwndListView,&Item);
        }
    

    Danke
    Buster

    [ Dieser Beitrag wurde am 03.04.2003 um 09:50 Uhr von Buster editiert. ]



  • Hi,

    also die SubItems habe ich jetzt mit ListView_SetItemText hinbekommen. Ist das die einzigste Möglichkeit? Wenn dann würde ich am liebsten alle Daten in einer Schleife reinschreiben, dann könnte ich wohl ein Item einfügen, dass keinen Text beinhaltet und alles über ListView_SetItemText erledigen.
    Probier das mal aus.

    Gibt es da auch noch einen Trick, mit den Scrollbars? Sind bei mir nicht da und auch bei den Styles kann ich diesbezüglich nichts finden. Über die Windows-Styles?

    Über Infos wäre ich dankbar.

    Buster



  • Original erstellt von Buster:
    Gibt es da auch noch einen Trick, mit den Scrollbars? Sind bei mir nicht da und auch bei den Styles kann ich diesbezüglich nichts finden. Über die Windows-Styles?

    Wenn du es einen Trick nennst, WS_HSCROLL bzw. WS_VSCROLL mit zu den Fenster-Styles hinzuzufügen...



  • du kannst auch alternativ eine callback funktion verwenden, aber ansonsten kenne
    ich auch keine andere möglichkeit als SetItemText http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listview/listview_overview.asp

    die scrollbars kannst du bei den wnd styles dazu schreiben



  • Original erstellt von Buster:
    kann es sein, dass der ListView erst ab WIN XP unterstützt wird?

    Was glaubst du denn, in was für einer Art Fenster die Icons auf dem Desktop unter Win95 angezeigt werden? 😉



  • unter LVITEM steht:

    Windows NT/2000: Requires Windows NT 3.51 or later
    Windows 95/98/Me: Requires Windows 95 or later

    unter LVITEM Structure steht:

    Minimum operating systems Windows XP

    Aber das funzt schon unter alten Windows-Versionen, bei Windows XP sind nur ein paar mehr Möglichkeiten dazu gekommen.



  • @all,

    danke Euch für die Infos.

    Ich hoffe nun zum Abschluss 😃 , wie kann ich beim ListView die Größe ändern, also wenn ich das Child, in dem es steckt maximize dann habe ich links oben in der Ecke nen verhunzten ListView, der mittlerweile auch Scrolls hat 🙂

    Aber ich kann keine Funktion finden, der ich das Rect des Parent oder auch Koordinaten/Breiten/Höhe mitgeben kann.

    Wahrscheinlich ist das wieder total easy, aber mit der MSDN bin ich noch am verhandeln 😡

    Danke Buster



  • größen von fenster und positionen kannst du zum beispiel mit MoveWindow(...) ändern

    dein parent window sendet WM_SIZE

    beispiel:

    case WM_SIZE:
                if(wParam == SIZE_MINIMIZED)
                    ShowWindow(hWnd, SW_HIDE);
                else
                {
                    RECT rc;
                    GetClientRect(hWnd, &rc);
                    MoveWindow(
                                           HwndListView, 
                                           0, 
                                           50, 
                                           rc.right - rc.left, 
                                           rc.bottom - rc.top - 50, 
                                           TRUE);
                }
                break;
    


  • oops ...., stimmt, danke. Ich betrachte den ListView immer noch getrennt vom Fenster, aber er ist ja mit dem Fenster erst erstellt worden.

    Vielen Dank!

    Buster


Anmelden zum Antworten