ListView, Item selektieren und focusieren vom Code aus, was sonst ?



  • moin meisters ...

    habe es bisher noch nicht gebraucht, deshalb jetzt mal die Frage

    ich möchte gern beim Start des Dialoges eine ListView_Zeile selektiert darstellen lassen.

    Ich habe nun mal in meiner Verzweiflung alles Versucht, aber es will nicht funktionieren ...

    WM_INITDIALOG:
    {
                hList = GetDlgItem(hDlg, IDC_LIST1);
                SendMessage(hList,LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT); // Set style
                ListView_SetBkColor(hList, GetSysColor(COLOR_BTNFACE));
                ListView_SetTextBkColor(hList, GetSysColor(COLOR_BTNFACE));
                ListView_SetTextColor(hList, GetSysColor(COLOR_BTNTEXT  ));
    
                // ============================================================================================
                // Struktur vorbelegen
                lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
                lvc.fmt = LVCFMT_LEFT;
                lvc.iSubItem = 0;
                // ============================================================================================
                // Column 0 - Benutzer
                lvc.cx = 100;
                lvc.pszText = TEXT("Benutzer");
                lvc.cchTextMax = lstrlen(TEXT("Benutzer"))+1;
                ListView_InsertColumn(hList, 0, &lvc);
                // ============================================================================================
                // Column 1 - Status
                lvc.mask |= LVCF_SUBITEM;
                lvc.cx = 100;
                lvc.pszText = TEXT("Status");
                lvc.cchTextMax = lstrlen(TEXT("Status"))+1;
                lvc.iSubItem = 1;
                ListView_InsertColumn(hList, 1, &lvc);
    
                lvi.mask        = LVIF_TEXT; 
                lvi.state       = 0; 
                lvi.stateMask   = 0; 
                lvi.pszText     = NULL; 
                lvi.cchTextMax  = 0;
                lvi.iImage      = 0;
                lvi.lParam      = 0;        
                lvi.iSubItem    = 0; 
    
                lvi.iItem       = 0;
                ListView_InsertItem(hList, &lvi);
                ListView_SetItemText(hList, 0, 0, TEXT("Item1"));
                ListView_SetItemText(hList, 0, 1, TEXT("SubItem1"));
    
                lvi.iItem       = 1;
                ListView_InsertItem(hList, &lvi);
                ListView_SetItemText(hList, 1, 0, TEXT("Item2"));
                ListView_SetItemText(hList, 1, 1, TEXT("SubItem2"));
    
                ListView_SetItemState(hList, 1, LVIS_SELECTED|LVIS_FOCUSED, LVIS_OVERLAYMASK);
                ListView_SetSelectionMark(hList, 1);
                ListView_Update(hList, 1);
                return TRUE; 
    
    }
    

    Vielen Dank, wenn mal wer sich meiner annimmt. Danke

    mfg
    RB



  • moin meisters ... (Nachtrag)

    jetzt habe ich folgendes probiert ...

    if( LOWORD(wParam) == IDC_BTN_GETITEM )
                {
                    TCHAR szBuf[20];
                    int nState;
    
                    hList = GetDlgItem(hDlg, IDC_LIST1);
                    ListView_GetItemState(hList, 1, nState);
    
                    wsprintf(szBuf, TEXT("%d"), nState);
                    MessageBox(hDlg, szBuf, TEXT(""), MB_OK);
                }
    

    Es ist egal ob Item 1 angeklickt ist oder nicht, nState hat immer den Wert 96.
    Es müsste aber das Bit 2 gesetzt sein, wenn ich ein Item mit der Maus anklicke.

    Ich verstehe nicht was ich falsch mache ... zum kotzen ist das

    mfg
    RB


Anmelden zum Antworten