Listview Problem



  • Hallo,

    ich hab ein Listview erstellt

    // Listview ------------------------------
                static HINSTANCE hInstanceList;
                static int i, iCol;
                static char *szText[3] = {"Field1","Field2", "Field3"};
                static int szTextColWidth[3] = {40,60,50};
                static LVCOLUMN lvc;
                HWND hWndList;
    
                hInstanceList = ((LPCREATESTRUCT) lParam)->hInstance;
                INITCOMMONCONTROLSEX ictrlex;
                ictrlex.dwSize       = sizeof(INITCOMMONCONTROLSEX);
                ictrlex.dwICC        = ICC_LISTVIEW_CLASSES;
                InitCommonControlsEx(&ictrlex);
    
                hWndList = CreateWindow(WC_LISTVIEW, 
                                        "",
                                        WS_CHILD | WS_BORDER | WS_VISIBLE | LVS_EDITLABELS | LVS_SORTASCENDING | LVS_REPORT,
                                        5, 
                                        5, 
                                        500 , 
                                        300, 
                                        hwnd, 
                                        (HMENU)ID_LISTVIEW, 
                                        hInstance, 
                                        NULL);
    
                // setzt die Extended Styles
                ListView_SetExtendedListViewStyle(hWndList,LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB );
    
                //PrevWndProcLst = (WNDPROC)SetWindowLong(hWndList, GWL_WNDPROC, (long)LstWndProc);
    
                lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; 
    
                for (iCol = 0; iCol < 3; iCol++) 
                { 
                    lvc.iSubItem = iCol+1;
                    lvc.pszText = szText[iCol];   
                    lvc.cx = szTextColWidth[iCol];     // width of column in pixels
                    lvc.fmt = LVCFMT_LEFT;  // left-aligned column
    
                    ListView_InsertColumn(hWndList, iCol, &lvc); 
                }
    

    mein Programm zeigt es mir auch wunderschön an.
    Nur kann ich weder Werte in die Zellen schreiben noch
    kann ich mit

    ListView_SetItemText(hWndList, 1, 1, "X");
    

    dem Feld 1-1 einen Wert zuweisen.

    Ich weiss es ist nur was kleines aber ich find den Fehler nicht 😕
    Und bevor jemand meckert, ich hab leider nichts über die Suche gefunden
    was mir weiterhilft 😞

    Danke schon mal
    Robby



  • SetItemText fügt kein Item ein. Das muss man mit InsertItem machen.



  • Original erstellt von Nemesyzz:
    SetItemText fügt kein Item ein. Das muss man mit InsertItem machen.

    Prima, danke. Das funktioniert schonmal.
    Aber wie kann ich etwas in die Felder reinschreiben
    oder diesen Wert den ich zuweise ändern???



  • Original erstellt von Robby:
    Aber wie kann ich etwas in die Felder reinschreiben
    oder diesen Wert den ich zuweise ändern???

    Das geht dann mit ListView_SetItemText(...);



  • Die einfachste Möglichkeit, einen String zur ListBox hinzuzufügen ist aber mit LB_ADDSTRING, da man keinen Index angeben muss :).

    cya 🙂



  • Original erstellt von MagiC Creator:
    **Die einfachste Möglichkeit, einen String zur ListBox hinzuzufügen ist aber mit LB_ADDSTRING, da man keinen Index angeben muss :).

    cya :)**

    Das es sich aber um eine ListView handelt...



  • Du hast Recht... da hab ich anscheinen was verwechselt :), sorry.

    cya 🙂



  • muss er nicht erst ein LVITEM erstellen und damit die ListView füllen?
    CodeBsp. muss ich erst raussuchen wenn du eins haben willst.



  • Original erstellt von mosta:
    muss er nicht erst ein LVITEM erstellen und damit die ListView füllen?
    CodeBsp. muss ich erst raussuchen wenn du eins haben willst.

    Wenn Du (oder jemand anderes) ein Beispiel hätte wäre es nett
    wenn Du Du es posten könntest.

    Mein Problem ist nämlich immer noch, das ich in die Felder
    nix reinschreiben kann...
    Ich hab zwar eine Excel-Ähnliche Oberfläche aber kann in die Zellen
    nichts reinschreiben...nur übers Programm füllen....



  • ich hab mich da verlesen. Ich dachte du willst es selber füllen und nicht eine Exceltabelle die vom Benutzer gefüllt wird. Das muss man doch mit nem Style hinkriegen oder kuck in der MSDN.



  • LVS_EDITLABELS
    Item text can be edited in place. The parent window must process the LVN_ENDLABELEDIT notification message.

    hab ich aus der MSDN

    hier der Link zur LVN_ENDLABELEDIT

    [url] http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listview/notifications/lvn_endlabeledit.asp [/url]

    oder lieg ich da falsch.


Anmelden zum Antworten