ListView befüllen - so richtig?



  • Nach langem hin und her habe ich es endlich hinbekommen, dass das ListView mit zwei Testzeilen an Daten befüllt wird. Allerdings bin ich mir nach dem ganzen probieren und gefrimmele nicht wirklich sicher, ob der Code so richtig ist oder nicht.

    // Create ListView
    //----------------------------------
    
    hListView = CreateWindow( WC_LISTVIEW,
                                  Null,
                                  WS_CHILD | WS_VISIBLE | LVS_REPORT| WS_BORDER,
                                  10, 10, 780, 430,
                                  hWnd,
                                  00,
                                  g_hInst,
                                  Null);
    
    // Create Header Columns
    //----------------------------------
    
    LV_COLUMN lvc
    lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH  | LVCF_FMT   ;
    lvc.fmt  = LVCFMT_LEFT  
    
    lvc.iSubItem = 0;
    lvc.cx       = 100;
    lvc.pszText  = "Anrede";
    SendMessage(hListView, LVM_INSERTCOLUMN, 0, lvc) 
    
    lvc.iSubItem = 1;
    lvc.cx       = 250;
    lvc.pszText  = "Vorname";
    SendMessage(hListView, LVM_INSERTCOLUMN, 1, lvc) 
    
    lvc.iSubItem = 2;
    lvc.cx       = 250;
    lvc.pszText  = "Nachname";
    SendMessage(hListView, LVM_INSERTCOLUMN, 2, lvc)
    
    // Create items / Fill List
    //----------------------------------
    LVITEM LvItem
    
    // 1. Zeile im ListView hinzufügen
    
    LvItem.mask             = LVIF_TEXT;
    LvItem.cchTextMax       = 256;
    LvItem.iItem            = 0
    LvItem.iSubItem         = 0
    SendMessage(hListView, LVM_INSERTITEM, 0, LvItem);
    
    LvItem.iItem    = 0;
    LvItem.iSubItem = 0;
    LvItem.pszText  = "Herr";
    SendMessage(hListView, LVM_SETITEM, 0, LvItem);
    
    LvItem.iItem    = 0;
    LvItem.iSubItem = 1;
    LvItem.pszText  = "Karl";
    SendMessage(hListView, LVM_SETITEM, 0, LvItem);
    
    LvItem.iItem    = 0;
    LvItem.iSubItem = 2;
    LvItem.pszText  = "Mustermann";
    SendMessage(hListView, LVM_SETITEM, 0, LvItem);
    
    // 2. Zeile im ListView hinzufügen
    
    LvItem.mask             = LVIF_TEXT;
    LvItem.cchTextMax       = 256;
    LvItem.iItem            = 1
    LvItem.iSubItem         = 0
    SendMessage(hListView, LVM_INSERTITEM, 0, LvItem);
    
    LvItem.iItem    = 1;
    LvItem.iSubItem = 0;
    LvItem.pszText  = "Frau";
    SendMessage(hListView, LVM_SETITEM, 0, LvItem);
    
    LvItem.iItem    = 1;
    LvItem.iSubItem = 1;
    LvItem.pszText  = "Anne";
    SendMessage(hListView, LVM_SETITEM, 0, LvItem);
    
    LvItem.iItem    = 1;
    LvItem.iSubItem = 2;
    LvItem.pszText  = "Musterfrau";
    SendMessage_(hListView, LVM_SETITEM, 0, LvItem);
    


  • http://www.c-plusplus.net/forum/275735

    Vergleiche einfach damit. Wenn der Code funktioniert, ist das oft (nicht immer) ein Zeichen, dass du alles richtig gemacht hast.

    Wenn ich mich nicht irre, dann verlangt LVM_INSERTITEM et al. einen Pointer auf die entsprechenden Strukturen. Du übergibst allerdings quasi eine Kopie und keinen Pointer.



  • Cool! Vielen Dank für den Link! Werde ihn mir morgen nochmal mal in Ruhe durchlesen. Habe ihn gerade auf die schnelle Überflogen. Werde dann mal schauen, ob mein Code ansonsten soweit richtig ist oder nicht ^^


Log in to reply