Fuente/ Codesnippets | | | | Julian Schmidt | Viele Características rund en Ratón y Ventana.
Def SetCursorPos(2)!"User32","SetCursorPos"
Windowstyle 10
Título de la ventana "Beispiel para GetwindowRect, GetCursorPos, ScreenToClient, WindowfromPoint y ihre Anwendung"
CLS
WindowZ(%hwnd,-1)
Var pic1&=Crear("hNewPic", 100, 100, RGB(0,0,255))
Var pic2&=Crear("hNewPic", 100, 100, RGB(255,0,0))
Var picbt&=Crear("PicButton",%hwnd,0,(width(%hwnd)-100)/2,(height(%hwnd)-100)/2,100,100)
Settext picbt&,"Bildbutton a Demonstration uno Hoverbuttons con HandleHover"
Var text&=Crear("Text",%hwnd,"",0,0,width(%hwnd),16)
Var pos&=Crear("Text",%hwnd,"",0,height(%hwnd)-16,width(%hwnd),16)
Var Dlg&=Crear("Text",%hwnd,"",0,16,width(%hwnd),16)
Line width(%hwnd)/2,0 - width(%hwnd)/2,height(%hwnd)
Usermessages 16
Sinestar encargado (%umessage=16) or iskey(27)
Waitinput 30
SendMessage(picbt&,$F7 | 247,0,If(HandleHover()=picbt&,pic1&,pic2&))'Hover-Button con HandleHover(), Alternativ el Verwendung de IsMouseHover()
Settext text&,IF(IsMouseInDg(%hwnd, 0, 0, width(%hwnd)/2, height(%hwnd))=1,"Maus en linker Seite",IF(IsMouseInDg(%hwnd, width(%hwnd)/2, 0, width(%hwnd), height(%hwnd))=1,"Maus en rechter Seite","Maus außerhalb des Client_Bereichs de hWnd"))
Settext pos&, "Position de %hwnd (global): "+Str$(WindowRect(%hwnd,"X1"))+"x"+Str$(WindowRect(%hwnd,"Y1"))
Settext Dlg&, "Maus encima el Handle '"+Str$(HandleHover())+"' con el Titel '"+Mid$(Gettext$(HandleHover()),1,45)+"...'"
Settext %hwnd, "CursorPosGlobal: "+Str$(CursorPos("X1"))+"x"+Str$(CursorPos("Y1"))+" - CursorPosLokal en hWnd: "+Str$(CursorPos("X1",%hwnd))+"x"+Str$(CursorPos("Y1",%hwnd))
EndWhile
deleteobject pic1&
deleteobject pic2&
end
Proc IsMouseHover
Parámetros hdl&
Volver Between(CursorPos("X1"), WindowRect(hdl&,"X1"), WindowRect(hdl&,"X2"), CursorPos("Y1"), WindowRect(hdl&,"Y1"), WindowRect(hdl&,"Y2"))
ENDPROC
Proc IsMouseIn
Parámetros x1%,y1%,x2%,y2%
Volver Between(CursorPos("X1"), x1%, x2%, CursorPos("Y1"), y1%, y2%)
ENDPROC
Proc IsMouseInDg
Parámetros hdl&,x1%,y1%,x2%,y2%
Volver Between(CursorPos("X1",hdl&), x1%, x2%, CursorPos("Y1",hdl&), y1%, y2%)
ENDPROC
Proc WindowSize
Parámetros hdl&,x%,y%
SetWindowPos hdl& = WindowRect(hdl&,"X1"),WindowRect(hdl&,"Y1") - x%,y%
ENDPROC
Proc WindowZ
Parámetros hdl&, modus%
'Modus = 0 : TOP| 1 : BOTTOM | -1 : TOP-MOST | -2 : BOTTOM-MOST
SetWindowPos hdl& = WindowRect(hdl&,"X1"),WindowRect(hdl&,"Y1") - WindowRect(hdl&,"Breite"),WindowRect(hdl&,"Höhe"); modus%
ENDPROC
Proc HandleHover
Declarar mpos#
Dim mpos#,8
Externo("user32","GetCursorPos",mpos#)
Var hdl&=Externo("USER32","WindowFromPoint",long(mpos#,0),long(mpos#,4))
Disponer mpos#
Volver hdl&
ENDPROC
Proc HandleHoverPos
Parámetros x&,y&
Volver Externo("USER32","WindowFromPoint",x&,y&)
ENDPROC
Proc CursorPos
Parámetros Modus$
Modus$=Lower$(Modus$)
Declarar x%, mpos#
Dim mpos#,8
Externo("user32","GetCursorPos",mpos#)
Case @&(2)<>0 : Externo("USER32","ScreenToClient",@&(2),mpos#)
Case Modus$="x1" : x%=long(mpos#,0)
Case Modus$="y1" : x%=long(mpos#,4)
Case Modus$="x2" : x%=IF(@&(2)<>0,WindowRect(@&(2),"Breite"),%maxx)-long(mpos#,0)
Case Modus$="y2" : x%=IF(@&(2)<>02,WindowRect(@&(2),"Höhe"),%maxy)-long(mpos#,4)
Disponer mpos#
Volver x%
ENDPROC
Proc WindowRect
Parámetros hdl&,Modus$
Modus$=Lower$(Modus$)
Declarar x%, b#
Dim b#,16
Externo("USER32", "GetWindowRect",hdl&,b#)
Case @&(3)<>0 : Externo("USER32","ScreenToClient",@&(3),b#) : Externo("USER32","ScreenToClient",@&(3),b#+8)
Case Modus$="breite" : x%=Largo(b#,8)-Largo(b#,0)
Case Modus$="höhe" : x%=Largo(b#,12)-Largo(b#,4)
Case Modus$="x1" : x%=Largo(b#,0)
Case Modus$="y1" : x%=Largo(b#,4)
Case Modus$="x2" : x%=Largo(b#,8)
Case Modus$="y2" : x%=Largo(b#,12)
Disponer b#
Volver x%
ENDPROC
Proc Workarea
Parámetros Modus$
modus$=lower$(modus$)
Declarar Rect#,x%
Dim Rect#,16
Externo("User32","SystemParametersInfoA",48,0,Rect#,0)
caso modus$="x1" : x%=Largo(Rect#,0)
caso modus$="y1" : x%=Largo(Rect#,4)
caso modus$="x2" : x%=Largo(Rect#,8)
caso modus$="y2" : x%=Largo(Rect#,12)
Disponer Rect#
Volver x%
ENDPROC
Apéndice de IF:
Martin Kempf (21.01.2016)
Gracias, super Sache, funktioniert. Referencia todavía: Yo arbeite con 2 Bildschirmen: El Proc HandleHover produziert choque, si la Ratón de el una para otro Bildschirm springt.
|
| | | XProfan X2Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë— Webseite [...] | 06.02.2012 ▲ |
| |
| | | Yo sería su abraten propio Características con API-Funktionsnamen a ocupar -
así hay GetCursorPos ( [...] ) ya y si uno z.B. XPSE nutzt entonces puede ser simplemente APIs escribir sin a deklarieren y wer mag ya dahingehende Kollisionen. |
| | | | |
| | E.T. | | | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 07.02.2012 ▲ |
| |
| | | Diese Kontrolle es no notwendig como uno con ~ explizit en API-Características verweisen kann, así va así a unterscheiden:
y XPSE kann así durchaus ermöglichen API-gleichnamige propio Características a deklarieren.
Mein Rat bezog se sólo más darauf una propio setPixel-Función el mejor Unterscheidung wegen más z.B. mySetPixel a nennen |
| | | | |
| | Julian Schmidt | | | | | |
| | | Martin Kempf (21.01.2016)
Gracias, super Sache, funktioniert. Referencia todavía: Yo arbeite con 2 Bildschirmen: El Proc HandleHover produziert choque, si la Ratón de el una para otro Bildschirm springt.
|
| | | | |
|
Zum QuelltextTema opciones | 14.310 Views |
ThemeninformationenDieses Thema ha 3 subscriber: |