OnMouseWheel()
-
Wieso lässt sich bei meinem Code der Screen nicht per Mousewheel scrollen?
Hab ich irgend etwas vergessen?/* the vertical scrollbar */ void CSipromTView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { CFormView::GetScrollInfo(SB_VERT,&scrollinfo, SIF_TRACKPOS); CFormView::OnVScroll(nSBCode, nPos, pScrollBar); } /* Scroll with the mouse wheel */ BOOL CSipromTView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) { CFormView::GetScrollInfo(SB_VERT, &scrollinfo, SIF_TRACKPOS); return CFormView::OnMouseWheel(nFlags, zDelta, pt); }
/*HEADER-FILE*/ CScrollBar* pScrollBar; afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); SCROLLINFO scrollinfo;
-
Vielleicht wäre es eine gute Idee, aus der OnMouseWheel()-Behandlung auch die OnVScroll()-Funktion aufzurufen
So, wie die beiden Funktionen dort stehen, könntest du sie auch komplett weglassen.
-
1. Frage: Wird OnMouseWheel angesprungen? Gibt es überhaupt Einträge in der Messagemap?
2. Frage: Liegt evtl. Dein CFormView in einem CSplitterWnd? Dann hast Du einen Bug gefunden: http://blog.m-ri.de/index.php/2007/05/07/cformview-in-einem-csplitterwnd-will-keine-mouse-wheel-nachrichten/
-
Zu Frage1: Jap OnMouseWheel wird angesprochen.
Zu Frage2: Jap habe ein SplitterWnd. Und nu?In einem früheren Projekt hat die Methode die ich im letzten Beitrag geposted habe funktioniert, das war damals allerdings kein SplitterWindow.
Hier mal der Code wie ich es jetzt versucht hatte:
BOOL CSipromTView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) { CFormView::OnVScroll(SB_THUMBTRACK, scrollinfo.nTrackPos +10 ,NULL); CFormView::GetScrollInfo(SB_VERT, &scrollinfo, SIF_TRACKPOS); return CFormView::OnMouseWheel(nFlags, zDelta, pt); }
Damit lässt sich aber leider nur in eine Richtung scrollen.
PS: Das Programm soll auch unter Win95 laufen, ist das mit dieser Methode möglich?
-
Vielleicht solltest du die Scrollrichtung (die bekommst du als zDelta übergeben) auch in deine Rechnung mit einbeziehen:
CFormView::OnVScroll(SB_THUMBTRACK, scrollinfo.nTrackPos +zDelta*skal ,NULL);//skal mußt du so jusiteren, daß die Geschwindigkeit stimmt
-
Und läuft diese Methode auch unter Win95?
Könnte das Programm eigentlich abstürzen wenn die Methode nicht bei Win95 funktioniert?
-
maRKus23 schrieb:
Zu Frage1: Jap OnMouseWheel wird angesprochen.
Zu Frage2: Jap habe ein SplitterWnd. Und nu?
Damit lässt sich aber leider nur in eine Richtung scrollen.
PS: Das Programm soll auch unter Win95 laufen, ist das mit dieser Methode möglich?1. Blog lesen. Die Lösung steht da drin!
2. Unter Win95 funktioniert der Code definitiv nicht. Denn WM_MOUSEWHEEL gibt es in Win91 nicht! Dort ist das eine RegisteredMessage.Mein Tipp: Vergiss Win95 einfach!
-
Martin Richter schrieb:
Mein Tipp: Vergiss Win95 einfach!
Ok, Win 95, kann ich noch vergessen. Aber wie schauts mit Win98, könnte das programm abstürzen? Oder würde einfach die Methode nicht funktionieren?
-
Abstürzen? Warum?
Aber ich würde überhaupt Win9x vergessen!IMHO war WM_MOUSEWHEEL seit Win98 definiert.
-
Kann nicht einfach win9x vergessen. Die software soll mal auf den Markt kommen unmd requirements schreiben vor ab win98.
-
maRKus23 schrieb:
Kann nicht einfach win9x vergessen. Die software soll mal auf den Markt kommen unmd requirements schreiben vor ab win98.
Und wer bitte stellt solche Requirements auf?
Wissen die Leute die solche Requirements setzen eigentlich mit welchem Balast man sich abmühen muss nur um dieses Schrottbetriebssystem Win98 am leben zu halten?Das ist einfach ein Witz, Software für ein OS zu entwickeln, dass nicht mehr gepflegt wird und dass die gesamte Entwicklung nur aufhält.
Ich möchte mal gerne wissen (ernsthaft) wieviele Win95 und wieviele Win98 produktiv noch in Betrieb sind.
Egal, Win)x findet ohne mich statt...
-
Die OT Diskussion zu Win9x geht da weiter: http://www.c-plusplus.net/forum/viewtopic-var-t-is-181584.html