Strg+A abfangen
-
Ich will die Tastenkombination (STRG+A) abfangen
wenn ich die beiden Tasten einzeln abfange und ein Flag setzte das mir anzeigt ob STRG gedrückt wurde reagiert nichtsvoid CMyListCtrl::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { if (nChar == VK_CONTROL) { m_bCTRL = true; } if (nChar == 65 && m_bCTRL) { AfxMessageBox("TEST"); } CListCtrl::OnKeyDown(nChar, nRepCnt, nFlags); } void CMyListCtrl::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) { if (nChar == VK_CONTROL) { m_bCTRL = false; } CListCtrl::OnKeyUp(nChar, nRepCnt, nFlags); }
ich kann auch nicht auf CTRL_A prüfen, da der Compiler CTRL_A nicht kennt
kann mir jemand sagen wie ich (STRG+A) abfangen kann?
-
Das geht entweder in PreTranslateMessage oder mit Hilfe der AccelatorTabelle.
-
Danke, hätt ich auch drauf kommen können
Aber da ich grad dabei bin gleich die nächste (blöde)Frage hinterher:
Wie markier ich ein/alle item(s) in einem CListCtrl ?
ich hab keine Memberfunktion gefunden die mich auch nur ein Item markieren lässt
-
Ich hab gerade mal kurz geguckt, finde aber nix außer
// Hat keine Wirkung, daher erstmal auskommentiert // m_lscOrte.SetFocus(); // m_lscOrte.SetSelectionMark(m_lscOrte.GetItemCount()-1); // m_lscOrte.SetItemState(m_lscOrte.GetItemCount()-1,LVIS_SELECTED|LVIS_FOCUSED|LVS_SHOWSELALWAYS,LVIS_SELECTED|LVIS_FOCUSED|LVS_SHOWSELALWAYS);
Ich guck aber nochmal. Aber vielleicht hatte ich ja nur was vergessen.
So:
Also ich vermute, SetItemState ist noch das passendste, da SetSelectionMark nur bei Einzelauswahl geht.
-
Weder SetSelectionMark
noch SetItemState
noch SetItem
ändern etwas an der Selection:void CProBetaViewSMD::OnCtrlA() { LVITEM lvi; CWnd* pWnd = GetFocus(); if(m_ctrlBaugruppen.m_hWnd == pWnd->m_hWnd) { for(int i=0;i<m_ctrlBaugruppen.GetItemCount()-1;i++) { m_ctrlBaugruppen.GetItem(&lvi); lvi.state = LVIS_SELECTED; lvi.mask = LVIF_STATE; lvi.stateMask = LVIS_SELECTED; m_ctrlBaugruppen.SetItem(&lvi); //m_ctrlBaugruppen.SetItemState(i,LVIS_SELECTED,LVIF_STATE); } } }
-
Schade, dann weiß ich es nicht.