| |
|
|
- 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? KompilierenMarkierenSeparierenDef 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 |
|
|
| |
|
|
|
« 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 | |
|
| |
|
|
|
| Kannst z.B. wm_lButtonDblClk als UserMessage festlegen... |
|
|
| |
|
|
|
Julian Schmidt | |
|
| |
|
|
|
| WindowStyle 512 oder SubClassProc... |
|
|
| |
|
|
|
Julian Schmidt | |
|
| |
|
|
|
Dieter Zornow | |
|
| 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 |
|
|
| |
|
|
|
| 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. |
|
|
| |
|
|
|
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 |
|
|
| |
|
|