Probleme mit CListCtrl unter NT4.0



  • Hallo,

    ich habe eine Programm mit einer CListCtrl. Mit Doppelklick auf ein Element wird dieses in einem anderen Feld dargestellt.
    Läuft das Programm unter XP klappt das, aber unter NT4.0 reagiert er nicht auf den Doppelklick.

    Weiß jemand woran das liegt?
    Danke+



  • Hm, Codeausschnitt wäre besser!



  • Dachte, dass das vielleicht ein NT-spezifisches Problem ist, da es unter XP ja funktioniert.
    Hier mal die Funktion für die Behandlung des Doppelklicks:

    // MsgH: Doppelklick in der Historie
    void CDMView::OnNMDblclkHistorie(NMHDR *pNMHDR, LRESULT *pResult)
    {
        // das Item unter dem Mousezeiger holen
        int pos = m_Historie.GetHotItem();
        // falls ungültig gleich zurück
        if (pos == -1)
            return;
        else
        {
            // hole ID der gewählten Zeile
            CString str(m_Historie.GetItemText(pos, 0));
            // hole Value Wert aus der Historie mit der ID
            CValue* val = GetDocument()->GetHistorie()->operator [](atoi(str));
            if (val)
            {
                // kopiere in aktuellen Value Wert
                *(GetDocument()->GetValue()) = *val;
                // aktualisiere Anzeige der ID
                SetDlgItemText(IDC_ID, val->GetValue());
            }
        }
        *pResult = 0;
    }
    


  • Tja, dann mussu wohl oder übel mal debuggen, oder, falls das nicht geht, in jeder Zeile ne MsgBox ausgeben.



  • Debuggen geht leider nicht...
    Mit der MsgBox - hät ich ja auch selbst mal drauf kommen können.
    Manchmal sieht man den Wald vor Bäumen nicht... 😉



  • So, anhand der MsgBox habe ich rausgefunden, dass CListCtrl::GetHotItem() unter NT immer -1 zurückliefert. Ich habe in der MSDN nachgeschaut, aber dort sind keine Angabe bezüglich der Systemkompatibilität.

    Hm, gibts eine andere Möglichkeit, das aktuelle Element rauszufinden auf das doppelt geklickt wurde?



  • LVM_GETHOTITEM
    Retrieves the index of the hot item. You can send this message explicitly or use the ListView_GetHotItem macro.

    Return Values
    Returns the index of the item that is hot.

    Requirements
    Version 4.70 and later of Comctl32.dll

    Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 3.0 and later).



  • Hm, hab nachgeschaut und der NT-Client erfüllt die Voraussetzungen (comctl32.dll in V5.80, IE in V5.xx)
    Also sollte das doch eigentlich funktionieren.

    Wie bekomme ich den über das Senden der Message LVM_GETHOTITEM die Position?


Anmelden zum Antworten