void CChoiceWindow::OnListviewKeydown(NMHDR* pnmhdr, LRESULT* pResult) { LPNMLVKEYDOWN lpnmkd = LPNMLVKEYDOWN(pnmhdr); OnChar(lpnmkd->wVKey, 0, lpnmkd->flags); *pResult = 0; }
bool CListViewDialog::OnNotify(UINT /* controlID */, LPNMHDR header) { if (header->hwndFrom != _listView) return false; switch(header->code) { case LVN_KEYDOWN: { LPNMLVKEYDOWN keyDownInfo = LPNMLVKEYDOWN(header); switch(keyDownInfo->wVKey) { case VK_DELETE: { if (!DeleteIsAllowed) return false; int focusedIndex = _listView.GetFocusedItem(); if (focusedIndex < 0) focusedIndex = 0; for (;;) { int index = _listView.GetNextSelectedItem(-1); if (index < 0) break; StringsWereChanged = true; _listView.DeleteItem(index); Strings.Delete(index); } if (focusedIndex >= _listView.GetItemCount()) focusedIndex = _listView.GetItemCount() - 1; if (focusedIndex >= 0) _listView.SetItemState(focusedIndex, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED); return true; } case 'A': { bool ctrl = (::GetKeyState(VK_CONTROL) & 0x8000) != 0; if (ctrl) { int numItems = _listView.GetItemCount(); for (int i = 0; i < numItems; i++) _listView.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED); return true; } } } } } return false; }
bool CListViewDialog::OnNotify(UINT /* controlID */, LPNMHDR header) { if (header->hwndFrom != _listView) return false; switch(header->code) { case LVN_ITEMACTIVATE: if (g_LVN_ITEMACTIVATE_Support) { OnOK(); return true; } break; case NM_DBLCLK: case NM_RETURN: // probabably it's unused if (!g_LVN_ITEMACTIVATE_Support) { OnOK(); return true; } break; case LVN_KEYDOWN: { LPNMLVKEYDOWN keyDownInfo = LPNMLVKEYDOWN(header); switch(keyDownInfo->wVKey) { case VK_DELETE: { if (!DeleteIsAllowed) return false; for (;;) { int index = _listView.GetNextSelectedItem(-1); if (index < 0) break; StringsWereChanged = true; _listView.DeleteItem(index); Strings.Delete(index); } int focusedIndex = _listView.GetFocusedItem(); if (focusedIndex >= 0) _listView.SetItemState_FocusedSelected(focusedIndex); _listView.SetColumnWidthAuto(0); return true; } case 'A': { // probably that code is unused ? /* bool ctrl = (::GetKeyState(VK_CONTROL) & 0x8000) != 0; if (ctrl) { int numItems = _listView.GetItemCount(); for (int i = 0; i < numItems; i++) _listView.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED); return true; } */ } } } } return false; }