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 nichts

    void 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. 😞


Anmelden zum Antworten