Deutsch
Forum

Links-, Rechts-, Doppelklick in Bereich eines Fenster erfassen

 
- Seite 1 -



Julian
Schmidt
Hallo,
ich würde gerne erfassen ob innerhalb eines bestimmten Bereichs eines Haupt-, oder Dialogfensters eine Links,- Rechts-, Doppel(links)klick gemacht wurde.
Ich weiß das es etwa für Links und Rechtsklick die Messages WM_LButtonDown, WM_RButtonDown gibt. Nur wie ermittle ich einen Doppelklick innerhalb eines bestimmten Bereichs?
KompilierenMarkierenSeparieren
Def LinksImBereich(4) (%message=$201) and (%MouseX>@&(1)) and (%MouseX<@&(3)) and (%MouseY>@&(2)) and (%MouseY<@&(4))
Def RechtsImBereich(4) (%message=$204) and (%MouseX>@&(1)) and (%MouseX<@&(3)) and (%MouseY>@&(2)) and (%MouseY<@&(4))
Windowstyle 24
cls
UseBrush 7,RGB(153,153,153)
Rectangle 50,50 - (width(%hwnd)-50),(height(%hwnd)-50)

While 1

    Waitinput

    If LinksImBereich(50,50,width(%hwnd)-50,height(%hwnd)-50)'Links im Innen-Rechteck = Verschieben

        UseCursor 5
        SendMessage(%hwnd,$112,$F012,0)
        External("USER32","ReleaseCapture")
        UseCursor 0

    Elseif RechtsImBereich(50,50,width(%hwnd)-50,height(%hwnd)-50)=0'Rechts im Außen-Rechteck = Ende

        break

    EndIf

Endwhile


LG

Julian57
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
24.09.2011  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


Detlef
Jagolski
Und so mit SubClassing!
KompilierenMarkierenSeparieren
 $P+
SetErrorLevel 0
 $H WINDOWS.PH
 $H MESSAGES.PH
 $H STRUCTS.PH
STRUCT TRect         = ~Rect
STRUCT TPoint        = ~Point
Declare appexit%
Declare Point#
Declare Rect#
Declare Punkt&
Dim Point#,TPoint
Dim Rect#,TRect

SubClassProc

    If SubClassMessage(%hwnd, ~WM_LBUTTONDBLCLK)

        Point#.X& = LOWORD(&sLParam)
        Point#.Y& = HIWORD(&sLParam)
        ~SetRect(Rect#,70,70,200,200)
        Case ~PtInRect(Rect#,Point#.X&,Point#.Y&) <> 0: Print "Doppelklick Links"

    ElseIf SubClassMessage(%hwnd, ~WM_RBUTTONDBLCLK)

        Point#.X& = LOWORD(&sLParam)
        Point#.Y& = HIWORD(&sLParam)
        ~SetRect(Rect#,70,70,200,200)
        Case ~PtInRect(Rect#,Point#.X&,Point#.Y&) <> 0: Print "Doppelklick Rechts"

    EndIf

    Set("WinProc",1)

EndProc

SetTrueColor 1
WindowStyle $003F
WindowTitle "DesignForm"
Window %maxX + 5,114 - 498,415
Cls ~GetSysColor(15)
~SetClassLong(%hwnd,~GCL_STYLE,(~GetClassLong(%hwnd, ~GCL_STYLE) + ~CS_DBLCLKS))
Rectangle 70,70 - 200,200
UseFont "MS Sans Serif",13,0,0,0,0
SetDialogFont 1
SubClass %hwnd,1
SetWindowPos %hwnd = 207,114 - 498,415;0

WhileNot appexit%

    WaitInput

    If %key = 2

        appexit%=1

    ElseIf %key = 4

        ' Fenstergröße

    ElseIf %key = 5

        ' Hilfe

    EndIf

Wend

SubClass %hwnd,0
Dispose Point#
Dispose Rect#
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
25.09.2011  
 




Detlef
Jagolski
Aus der API Hilfe!

WM_NCLBUTTONDBLCLK
WM_MBUTTONDBLCLK
WM_RBUTTONDBLCLK
WM_LBUTTONDBLCLK
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
24.09.2011  
 




Julian
Schmidt
Ein Beispiel?
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
24.09.2011  
 



Kannst z.B. wm_lButtonDblClk als UserMessage festlegen...
 
24.09.2011  
 




Julian
Schmidt
Also prinzipiell sowas? Funktioniert aber leider nicht.
KompilierenMarkierenSeparieren
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
24.09.2011  
 



WindowStyle 512 oder SubClassProc...
 
25.09.2011  
 




Julian
Schmidt
Funktioniert aber trotzdem nicht.
KompilierenMarkierenSeparieren
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.09.2011  
 




Dieter
Zornow
Müsste doch einfach so gehen
KompilierenMarkierenSeparieren
Declare X&
Def Getclasslong(2) !"USER32","GetClassLongA"
Def Setclasslong(3) !"USER32","SetClassLongA"
Cls
Usermessages $203,$206
X&=Getclasslong(%Hwnd,-26)
X&=X& | 8
Setclasslong(%Hwnd,-26,X&)'CS_DBLCLKS Class-Style setzen.

While 1

    Waitinput
    Case %Key=2:Break

    If %Umessage=$203

        Print "Linker Doppelklick."

    Elseif %Umessage=$206

        Print "Rechter Doppelklick."

    Endif

Endwhile

Usermessages 0
End
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
25.09.2011  
 




Detlef
Jagolski
Und so mit SubClassing!
KompilierenMarkierenSeparieren
 $P+
SetErrorLevel 0
 $H WINDOWS.PH
 $H MESSAGES.PH
 $H STRUCTS.PH
STRUCT TRect         = ~Rect
STRUCT TPoint        = ~Point
Declare appexit%
Declare Point#
Declare Rect#
Declare Punkt&
Dim Point#,TPoint
Dim Rect#,TRect

SubClassProc

    If SubClassMessage(%hwnd, ~WM_LBUTTONDBLCLK)

        Point#.X& = LOWORD(&sLParam)
        Point#.Y& = HIWORD(&sLParam)
        ~SetRect(Rect#,70,70,200,200)
        Case ~PtInRect(Rect#,Point#.X&,Point#.Y&) <> 0: Print "Doppelklick Links"

    ElseIf SubClassMessage(%hwnd, ~WM_RBUTTONDBLCLK)

        Point#.X& = LOWORD(&sLParam)
        Point#.Y& = HIWORD(&sLParam)
        ~SetRect(Rect#,70,70,200,200)
        Case ~PtInRect(Rect#,Point#.X&,Point#.Y&) <> 0: Print "Doppelklick Rechts"

    EndIf

    Set("WinProc",1)

EndProc

SetTrueColor 1
WindowStyle $003F
WindowTitle "DesignForm"
Window %maxX + 5,114 - 498,415
Cls ~GetSysColor(15)
~SetClassLong(%hwnd,~GCL_STYLE,(~GetClassLong(%hwnd, ~GCL_STYLE) + ~CS_DBLCLKS))
Rectangle 70,70 - 200,200
UseFont "MS Sans Serif",13,0,0,0,0
SetDialogFont 1
SubClass %hwnd,1
SetWindowPos %hwnd = 207,114 - 498,415;0

WhileNot appexit%

    WaitInput

    If %key = 2

        appexit%=1

    ElseIf %key = 4

        ' Fenstergröße

    ElseIf %key = 5

        ' Hilfe

    EndIf

Wend

SubClass %hwnd,0
Dispose Point#
Dispose Rect#
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
25.09.2011  
 




Julian
Schmidt
Ok, die beiden Quelltexte funktionieren super!
Besonders die Variante von Detlef
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.09.2011  
 



iF hats doch geschrieben...WindowStyle 512 oder SubClassProc...

Darauf schreibst Du Funktioniert aber trotzdem nicht in einem Beispiel was weder winstyle 512 oder die Proc nutzt.

Soll man sich schwer an kopf fassen.
 
25.09.2011  
 




Julian
Schmidt
Unbenannt (25.09.11)

iF hats doch geschrieben...WindowStyle 512 oder SubClassProc...
Darauf schreibst Du Funktioniert aber trotzdem nicht in einem Beispiel was weder winstyle 512 oder die Proc nutzt.
Soll man sich schwer an kopf fassen.


Wo ist in dem Beispiel kein SubClassProc?

Julian57 (25.09.11)


So hätte es richtig lauten müssen...
KompilierenMarkierenSeparieren
Es hat nur der CS_DBLCLKS Class-Style gefehlt
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.09.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

8.886 Betrachtungen

Unbenanntvor 0 min.
Thomas Freier22.05.2019
Walter12.04.2019
Georg Teles27.12.2018
Ernst30.04.2014
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie