Source/ Codesnippets | | | | 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. |
| | | | |
| | 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 ▲ |
| |
| | | 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 |
| | | | |
| | Julian Schmidt | | | | | |
| | | 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.
|
| | | | |
|
Zum QuelltextOptions du sujet | 14.270 Views |
Themeninformationencet Thema hat 3 participant: |