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