Einfachen und doppelten Mausklick in CListCtrl abfragen



  • Hallo ich bin noch ein ziemlicher Anfänger in VC++ und MFC-Programmierung.
    Ich habe ein MFC-Programm geschrieben, daß eine Liste in einem Dialog hat.
    Nun wollte ich zwei Aktionen abfragen:

    -Bei Doppelklick mit der Maus auf ein Listitem Aktion1
    -Bei einfachem Klick auf Listitem Aktion2

    Aber er erkennt den Event Doppelklick nicht mehr sondern sendet mir immer nur den einfachen Mausklick-Event, egal wie schnell ich den Doppelklick mache.

    Was kann ich machen, damit er den Doppelklick erkennt?

    Danke schon im Vorraus



  • Du könntest z.B. den Kram aus dem Einfach-Klick herausnehmen und in das Ereignis "Auswahl hat sich geändert" packen. Dann ist das Einfach-Klick überflüssig und kann weg und Doppel-Klick wird wieder erkannt.
    Müsste dann ON_LBN_SELCHANGE sein (für SELection CHANGE).



  • Ich habe eine von CListCtrl abgeleitete Klasse für meine Listen, da kannst du ON_WM_LBUTTONDBLCLK nutzen. 🙂


  • Mod

    Bei einem Doppelklick wird zuerst die Meldung für den ersten Klick gesendet und kurz danach eine zweite mit der Meldung für den Doppelklick.
    Wie hast Du den den Klick-Handler aufgebaut?
    Du hast hoffentlich den Default Handler aufgerufen...



  • Mein Code sieht folgender Maßen aus:

    BEGIN_MESSAGE_MAP(VERZEICHNISANSICHT, CDialog)
    ON_NOTIFY(NM_DBLCLK, IDC_VERZEICHNISLISTE, &VERZEICHNISANSICHT::OnNMDblclkVerzeichnisliste)
    ON_NOTIFY(NM_CLICK, IDC_VERZEICHNISLISTE, &VERZEICHNISANSICHT::OnNMClickVerzeichnisliste)
    END_MESSAGE_MAP()
    
    void VERZEICHNISANSICHT::OnNMClickVerzeichnisliste(NMHDR *pNMHDR, LRESULT *pResult)
    {
    // TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    AfxMessageBox("Einzelklick");
    *pResult = 0;
    }
    
    void VERZEICHNISANSICHT::OnNMDblclickVerzeichnisliste(NMHDR *pNMHDR, LRESULT *pResult)
    {
    // TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    AfxMessageBox("Doppelklick");
    *pResult = 0;
    }
    

    Gruß Thomas

    Edit by Estartu: Code Tags


Log in to reply