Español
Fuente/ Codesnippets

Ventana Getcursorpos Getwindowrect Hover Ratón Ratón Screentoclient Ventana Windowfrompoint

 

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.
 
07.02.2012  
 




E.T.
IF (07.02.12)
... y si uno z.B. XPSE nutzt entonces puede ser simplemente APIs escribir...


Ah, wollt ya siempre el API's así escribir, como ellos me gefallen

Aber veces en el Ernst: Wer sabe ya todos API-Bezeichnungen ?? Richtig: XPSE !!
Das sería Sigo sin problemas veces como Concepto para el nächste XPSE-Versión aufgreifen:
Kollisions-Kontrolle de Funktions-Namen con API-Funktionsnamen .

Man(n) gönnt se sí sonst nix, außer XProfan & XPSE 
 
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
 
07.02.2012  
 




Julian
Schmidt
Aktualisiert
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—
Webseite [...] 
01.01.2013  
 



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.
 
21.01.2016  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

14.342 Views

Untitledvor 0 min.
H.Brill vor 26 Tagen
Rainer Hoefs29.04.2023
RudiB.12.09.2022
p.specht18.11.2021
Más...

Themeninformationen

Dieses Thema ha 3 subscriber:

iF (3x)
Julian Schmidt (2x)
E.T. (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie