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.dllWindows 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?