Text einer angeklickten Zelle in einem ListView



  • Ich habe ein ListView (Report-Style) erstellt. Nun hätte ich gerne nach einem Doppelklick auf ein Element der ersten Spalte den Text dieser Zelle in einer Variablen stehen. Ich habe es so versucht, aber das Ergenis ist nicht wie erwünscht:

    TCHAR buffer [50];
    NMITEMACTIVATE* pItem;
    LVCOLUMN pcol;
    
    BOOL CALLBACK ResultmaskDlgProc(HWND hDlg, UINT uiMessage, WPARAM wParam, LPARAM lParam) {
      switch(uiMessage) {
        case WM_NOTIFY:
          switch (((LPNMHDR) lParam)->code) {
              case LVN_ITEMACTIVATE:
                  pItem = (LPNMITEMACTIVATE) lParam;
                  pcol.mask = LVCF_TEXT;
                  pcol.pszText = buffer;
                  pcol.cchTextMax = 50;
                  ListView_GetColumn(hwndList, pItem->iItem, &pcol);
                  // ab hier müsste pcol.pszText respektive buffer den Text enthalten, es steht aber nur Käse drin
    

    Habe ich da irgendetwas falsch verstanden? Hat jemand eine bessere Idee?

    Gruß Flo



  • Brauchst du nicht eher ListView_GetItemText - nur als Vermutung 🕶



  • Ja, das meinte ich mit besserer Idee. Das ist sicherlich einfacher. Leider bekomme ich hiermit auch kein besseres Ergebnis:

    TCHAR buffer [50];
    ZeroMemory(&buffer, sizeof(buffer));
    ListView_GetItemText(hwndList, pItem->iItem, 0, buffer, 50);
    

    buffer ist danach leider leer. Woran kann das liegen?



  • Ist bei deinem ZeroMemory-Aufruf nicht das & vor buffer fehl am Platz - buffer ist doch schon ein Pointer 😉



  • Ähm, ja. Das ist ja noch peinlicher als beim letzten Mal...
    Hab's geändert. Den Fehler behebt es allerdings nicht.



  • Aber hwndList weist auf dein ListView-Control, oder? Und ist pItem->iItem ein gülteiger Index (was steht da drin)?



  • Vielen Dank, Du bist spitze!
    Ich habe alle Variablen überprüft, nur bei hwndList bin ich nicht auf die Idee gekommen, dass es die case-Marke bei der Erzeugung natürlich nicht überlebt. Die 2 Wochen Schwimmbad am Stück sind wohl doch aufs Gehirn gegangen 🙄


Log in to reply