Français
Source/ Codesnippets

la fenêtre Getcursorpos Getwindowrect Hover souris Souris Screentoclient Fenêtre Windowfrompoint

 

Julian
Schmidt
Viele Funktionen rund um souris et la fenêtre.
Def SetCursorPos(2)!"User32","SetCursorPos"
Windowstyle 10
Titre de la fenêtre "Beispiel pour GetwindowRect, GetCursorPos, ScreenToClient, WindowfromPoint et ses Anwendung"
CLS
WindowZ(%hwnd,-1)
Var pic1&=Créer("hNewPic", 100, 100, RGB(0,0,255))
Var pic2&=Créer("hNewPic", 100, 100, RGB(255,0,0))
Var picbt&=Créer("PicButton",%hwnd,0,(width(%hwnd)-100)/2,(height(%hwnd)-100)/2,100,100)
Settext picbt&,"Bildbutton zur manifestation eines Hoverbuttons avec HandleHover"
Var text&=Créer("Text",%hwnd,»,0,0,width(%hwnd),16)
Var pos&=Créer("Text",%hwnd,»,0,height(%hwnd)-16,width(%hwnd),16)
Var Dlg&=Créer("Text",%hwnd,»,0,16,width(%hwnd),16)
Line width(%hwnd)/2,0 - width(%hwnd)/2,height(%hwnd)
Usermessages 16

WhileNot (%umessage=16) or iskey(27)

    Waitinput 30
    SendMessage(picbt&,$F7 | 247,0,Si(HandleHover()=picbt&,pic1&,pic2&))'Hover-Button avec HandleHover(), Alternativ qui Verwendung de IsMouseHover()
    Settext text&,IF(IsMouseInDg(%hwnd, 0, 0, width(%hwnd)/2, height(%hwnd))=1,"Maus sur linker Seite",IF(IsMouseInDg(%hwnd, width(%hwnd)/2, 0, width(%hwnd), height(%hwnd))=1,"Maus sur 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 sur den Handle '"+Str$(HandleHover())+"' avec dem Titel '"+Mid $(Gettext$(HandleHover()),1,45)+"...'"
    Settext %hwnd, "CursorPosGlobal: "+Str$(CursorPos("X1"))+"x"+Str$(CursorPos("Y1"))+" - CursorPosLokal sur hWnd: "+Str$(CursorPos("X1",%hwnd))+"x"+Str$(CursorPos("Y1",%hwnd))

Endwhile

deleteobject pic1&
deleteobject pic2&
end

Proc IsMouseHover

    Paramètres hdl&
    Retour Between(CursorPos("X1"), WindowRect(hdl&,"X1"), WindowRect(hdl&,"X2"), CursorPos("Y1"), WindowRect(hdl&,"Y1"), WindowRect(hdl&,"Y2"))

ENDPROC

Proc IsMouseIn

    Paramètres x1%,y1%,x2%,y2%
    Retour Between(CursorPos("X1"), x1%, x2%, CursorPos("Y1"), y1%, y2%)

ENDPROC

Proc IsMouseInDg

    Paramètres hdl&,x1%,y1%,x2%,y2%
    Retour Between(CursorPos("X1",hdl&), x1%, x2%, CursorPos("Y1",hdl&), y1%, y2%)

ENDPROC

Proc WindowSize

    Paramètres hdl&,x%,y%
    SetWindowPos hdl& = WindowRect(hdl&,"X1"),WindowRect(hdl&,"Y1") - x%,y%

ENDPROC

Proc WindowZ

    Paramètres 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

    Déclarer mpos#
    Faible mpos#,8
    Externe("user32","GetCursorPos",mpos#)
    Var hdl&=Externe("User32","WindowFromPoint",long(mpos#,0),long(mpos#,4))
    Dispose mpos#
    Retour hdl&

ENDPROC

Proc HandleHoverPos

    Paramètres x&,y&
    Retour Externe("User32","WindowFromPoint",x&,y&)

ENDPROC

Proc CursorPos

    Paramètres Modus$
    Modus$=Lower$(Modus$)
    Déclarer x%, mpos#
    Faible mpos#,8
    Externe("user32","GetCursorPos",mpos#)
    Cas @&(2)<>0 : Externe("User32","ScreenToClient",@&(2),mpos#)
    Cas Modus$="x1" : x%=long(mpos#,0)
    Cas Modus$="y1" : x%=long(mpos#,4)
    Cas Modus$="x2" : x%=IF(@&(2)<>0,WindowRect(@&(2),"Breite"),%maxx)-long(mpos#,0)
    Cas Modus$="y2" : x%=IF(@&(2)<>02,WindowRect(@&(2),"Höhe"),%maxy)-long(mpos#,4)
    Dispose mpos#
    Retour x%

ENDPROC

Proc WindowRect

    Paramètres hdl&,Modus$
    Modus$=Lower$(Modus$)
    Déclarer x%, b#
    Faible b#,16
    Externe("User32", "GetWindowRect",hdl&,b#)
    Cas @&(3)<>0 : Externe("User32","ScreenToClient",@&(3),b#) : Externe("User32","ScreenToClient",@&(3),b#+8)
    Cas Modus$="breite" : x%=Long(b#,8)-Long(b#,0)
    Cas Modus$="höhe" : x%=Long(b#,12)-Long(b#,4)
    Cas Modus$="x1" : x%=Long(b#,0)
    Cas Modus$="y1" : x%=Long(b#,4)
    Cas Modus$="x2" : x%=Long(b#,8)
    Cas Modus$="y2" : x%=Long(b#,12)
    Dispose b#
    Retour x%

ENDPROC

Proc Workarea

    Paramètres Modus$
    modus$=lower$(modus$)
    Déclarer Rect#,x%
    Faible Rect#,16
    Externe("User32","SystemParametersInfoA",48,0,Rect#,0)
    cas modus$="x1" : x%=Long(Rect#,0)
    cas modus$="y1" : x%=Long(Rect#,4)
    cas modus$="x2" : x%=Long(Rect#,8)
    cas modus$="y2" : x%=Long(Rect#,12)
    Dispose Rect#
    Retour x%

ENDPROC


Nachtrag de iF: 

Martin Kempf (21.01.2016)
merci, super l'affaire, funktioniert.
Hinweis encore: je travaille avec 2 Bildschirmen: qui Proc HandleHover produziert une Absturz, si le souris de dem une zum anderen Bildschirm springt.
 
XProfan X2
Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—Ë—
Webseite [...] 
06.02.2012  
 



je serait en dissuader eigene Funktionen avec API-Funktionsnamen trop belegen -

so gibt es GetCursorPos (  [...]  ) bereits et si on z.B. XPSE utilise ensuite peux on simple APIs écrivons sans déclarer et qui mag déjà dahingehende Kollisionen.
 
07.02.2012  
 




E.T.
iF (07.02.12)
... et si on z.B. XPSE utilise ensuite peux on simple APIs écrivons...


Ah, voulez déjà toujours qui API's so écrivons, comment vous mir plaisons

mais la fois im Ernst: qui kennt déjà alle API-Bezeichnungen ?? Richtig: XPSE !!
cela serait je doch glatt la fois comme concept pour qui prochain XPSE-Version aufgreifen:
Kollisions-Kontrolle de Funktions-Namen avec API-Funktionsnamen .

on(n) gönnt sich oui sonst nix, sauf 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  
 



cet Kontrolle ist pas notwendig là on avec ~ explizit sur API-Funktionen verweisen peux, so ça va trop unterscheiden:

et XPSE peux so durchaus ermöglichen API-gleichnamige eigene Funktionen trop déclarer.

mon conseil bezog sich arrêt plutôt puis une eigene setPixel-Funktion qui besseren Unterscheidung à cause de plutôt z.B. mySetPixel trop appeler
 
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)
merci, super l'affaire, funktioniert.
Hinweis encore: je travaille avec 2 Bildschirmen: qui Proc HandleHover produziert une Absturz, si le souris de dem une zum anderen Bildschirm springt.
 
21.01.2016  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

14.314 Views

Untitledvor 0 min.
H.Brill vor 22 Tagen
Rainer Hoefs29.04.2023
RudiB.12.09.2022
p.specht18.11.2021
plus...

Themeninformationen

cet Thema hat 3 participant:

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


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie