ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
1139
1139
EMPFEHLEN
-
18.02.08 13:16 #1
Wenn ich bei mir MFC, VS6.0, C++, eine ListCtrl habe und beide Funktionen Einzelklick und Doppelklick benutzen will, dann springt mir das Programm beim Doppelklick zuerst in den Einzelklick.
Wie kann ich dies verhindern, so dass entsprechend nur in die jeweilige Funktion gesprungen wird.
Vielen Dank für eure Hilfe im Voraus.
Gruß SunnyGeändert von SunnyBunny (18.02.08 um 13:16 Uhr) Grund: Tippfehler
Spinat schmeckt am besten, wenn man ihn kurz vor dem Servieren durch ein Schnitzel ersetzt und ein leckeres Hefeweizen dazu trinkt.
Code :1 2 3 4 5
if(Beitrag == "gut" || Beitrag == "lustig" || Beitrag == "hilfreich") { //Bewerte(CString User, Beitrag* Beitrag, BOOL Positiv) Bewerte([COLOR="Magenta"]"SunnyBunny"[/COLOR],&Beitrag_siehe_oben,[COLOR="Blue"]true[/COLOR]); }
-
18.02.08 15:00 #2
- Registriert seit
- Jun 2005
- Ort
- Bad Arolsen (Hessen)
- Beiträge
- 556
Hi,
das läuft darauf hinaus, die Auswertung zu verzögern, bis die DoubleClick-Zeit abgelaufen ist. Also in der Behandlungsroutine für den Einzelklick einen Timer starten mit etwas mehr als die DoubleClick-Zeit. Dann gibt es zwei Möglichkeiten.
Erstens: Der zweite Klick erfolgt, bevor der Timer abgelaufen ist. Dann wird die DoubleClick-Routine angesprungen. Hier bitte mit KillTimer den Timer ausschalten, dass er nicht auch auslöst und dann die weitere Behandlung starten.
Zweitens: Der Timer löst aus, bevor ein zweiter Klick kommt. Dann hier (in OnTimer) die Funktion für den Einzelklick implementieren. KillTimer nicht vergessen.
Mfg
langer
-
"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
18.02.08 16:34 #4
Jawoll ja.
NM_CLICK (einfach) und NM_DBLCLICK (doppelt) Notifications werden benutzt.
Er springt immer in die Einzelklick - Funktion, da der erste Teil des Doppelklciks ja ein Einfachklick ist. Finde das grausam von Microsoft, dass die das nicht auseinanderhalten.
Versuche mich gerade am Timer.
Spinat schmeckt am besten, wenn man ihn kurz vor dem Servieren durch ein Schnitzel ersetzt und ein leckeres Hefeweizen dazu trinkt.
Code :1 2 3 4 5
if(Beitrag == "gut" || Beitrag == "lustig" || Beitrag == "hilfreich") { //Bewerte(CString User, Beitrag* Beitrag, BOOL Positiv) Bewerte([COLOR="Magenta"]"SunnyBunny"[/COLOR],&Beitrag_siehe_oben,[COLOR="Blue"]true[/COLOR]); }
-
18.02.08 17:02 #5
Bekomme das mit dem Timer nicht ganz hin, da ich nicht weiss wie ich den Aufruf des Einzelklicks machen soll:
Code :1
OnClickListListe1(NMHDR* pNMHDR, LRESULT* pResult)
Woher bekomme ich die beiden Objekte?Spinat schmeckt am besten, wenn man ihn kurz vor dem Servieren durch ein Schnitzel ersetzt und ein leckeres Hefeweizen dazu trinkt.
Code :1 2 3 4 5
if(Beitrag == "gut" || Beitrag == "lustig" || Beitrag == "hilfreich") { //Bewerte(CString User, Beitrag* Beitrag, BOOL Positiv) Bewerte([COLOR="Magenta"]"SunnyBunny"[/COLOR],&Beitrag_siehe_oben,[COLOR="Blue"]true[/COLOR]); }
-
Die Timergeschichte könntest du so lösen:
GrußCode cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
void CMyDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) { const UINT nIDEvent = 1; m_bDblClick = FALSE; // Membervariable im Dialog SetTimer(nIDEvent, GetDoubleClickTime() + 10, NULL); *pResult = 0; } void CMyDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) { m_bDblClick = TRUE; // TODO: Doppelklick verarbeiten *pResult = 0; } void CMyDlg::OnTimer(UINT nIDEvent) // Mit Klassenassistenten erzeugen (WM_TIMER) { if( nIDEvent == 1 ) { KillTimer(nIDEvent); if( !m_bDblClick ) { // TODO: Einfachklick verarbeiten } } CDialog::OnTimer(nIDEvent); }
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
19.02.08 09:21 #7
Super DANKE!
Es funktioniert.
(Und ich wollte mit Callbackfunktion und Pretranslatemessage und Klicksimulation das machen, aber so ist das natürlich viel einfacher!).
/ClosedSpinat schmeckt am besten, wenn man ihn kurz vor dem Servieren durch ein Schnitzel ersetzt und ein leckeres Hefeweizen dazu trinkt.
Code :1 2 3 4 5
if(Beitrag == "gut" || Beitrag == "lustig" || Beitrag == "hilfreich") { //Bewerte(CString User, Beitrag* Beitrag, BOOL Positiv) Bewerte([COLOR="Magenta"]"SunnyBunny"[/COLOR],&Beitrag_siehe_oben,[COLOR="Blue"]true[/COLOR]); }
Ähnliche Themen
-
Dynamisch generierter Button löst OnClick-Event nicht aus
Von docere im Forum ASPAntworten: 1Letzter Beitrag: 26.07.09, 18:53 -
onmouseover omousout onclick ... bei onclick soll der divlayer stehenbleiben
Von webjumper im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 06.09.07, 15:18 -
Mensch löst sich auf
Von chris_94 im Forum Videoschnitt, Videotechnik & -produktionAntworten: 1Letzter Beitrag: 15.07.07, 20:58 -
bein löst sich
Von blubbbla im Forum 3D Studio MaxAntworten: 0Letzter Beitrag: 14.08.06, 19:53 -
Klickereignis löst vermehrung aus...!
Von Mailyn im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 21.05.05, 17:09





Zitieren

Login






