Español
Foro

Position y Abmaße uno Buttons ermitteln

 
- Página 1 -



Michael
Hettner
¡Hola,
como kann Yo el Position y el Abmaße uno Buttons en el Ventana principal ermitteln?
 
27.08.2021  
 



« Dieser Contribución wurde como Solución gekennzeichnet. »


Thomas
Freier
Yo verwende meist:
 $H windows.ph
 $H messages.ph
STRUCT RECT = Left&,Righ&,Top&,Bottom&
Declarar appexit%
Ventana de Estilo $003F
Título de la ventana "anklicken y mover "
Ventana 207,114 - 771,611
Cls ~GetSysColor(15)
UseFont "MS Sans Serif",13,0,0,0,0
SetDialogFont 1
Var Text& = Crear("Text",%hwnd,"veschieb mich",10,10,100,24)
Var Group& = Crear("Groupbox",%hwnd,"veschieb mich",240,240,300,300)
Var Button& = Crear("Button",%hwnd,"veschieb mich",140,10,100,24)
Var R# = New(RECT)

Sinestar encargado appexit%

    WaitInput
    ~EnumChildWindows(%hwnd,ProcAddr("MoveIt",2),MakeLong(%mousex,%mousey))

    If %key = 2

        Disponer hdr#
        Disponer R#
        appexit%=1

    Endif

EndWhile

Proc MoveIt

    Parámetros wnd&,lParam&
    ~GetClientRect(wnd&,R#)
    ~MapWindowPoints(wnd&,%hwnd,R#,2)

    If ~PtInRect(R#,LoWord(lParam&),HiWord(lParam&))

        ~Captura de lanzamiento()
        UseCursor 5
        SendMessage(wnd&,~WM_SYSCOMMAND,~SC_MOVE+1,0)
        UseCursor 0
        Volver 0

    endif

    Volver 1

ENDPROC

 
Gruß Thomas
Windows XP SP2, XProfan X2
28.08.2021  
 




p.specht

Willst du el Button platzieren? Mit Ratón linke obere Ecke anfahren y por %mousex, %mousey auslesen. Gleiches con él rechten unteren Ecke, el son entonces abzüglich el vorher ausgelesenen Werte el Größe.

En Buttons en fremden Programmtexten müsstes Si es usted el Handle wissen, entonces wäre lo vermutlich einfacher. In eignen Programmen weißt du sí el Werte, el du beim Crear verwendet hast ya ...
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
27.08.2021  
 




Michael
Hettner
El Buttons puede en mi Programa frei movido voluntad. El Positionen debería entonces en un INI-Expediente geschrieben voluntad, así el beim nächsten Programmaufruf el Buttons otra vez al gleichen Fleck befinden.
 
27.08.2021  
 




RudiB.
probiers veces con setWindowPos Handle,%mousex,%mousey
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
27.08.2021  
 




RudiB.
tener qué gefunden... [...] 

entonces en el Sinestar encargado ende& Bucle después de el Waitinput
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
27.08.2021  
 




H.Brill
El Abmaße ir sí simplemente :
Declarar Handle btn1, btn2, btn3, Largo ende
Ventana 600, 400
btn1 = Crear("Button", %HWnd, "Button1", 10, 10, 80, 25)
btn2 = Crear("Button", %HWnd, "Button2", 10, 50, 70, 25)
btn3 = Crear("Button", %HWnd, "Ende",    10, 90, 50, 25)
ende = 0

Sinestar encargado ende

    WaitInput

    If Clicked(btn1)

        MessageBox("Breite Btn1 : " + Str$(Width(btn1, 1)) + "\nHöhe Btn1 : " + Str$(Height(btn1, 1)), "Info", 0)

    ElseIf Clicked(btn2)

        MessageBox("Breite Btn2 : " + Str$(Width(btn2, 1)) + "\nHöhe Btn2 : " + Str$(Height(btn2, 1)), "Info", 0)

    ElseIf Clicked(btn3)

        MessageBox("Breite Btn3 : " + Str$(Width(btn3, 1)) + "\nHöhe Btn3 : " + Str$(Height(btn3, 1)), "Info", 0)
        ende = 1

    EndIf

EndWhile

End

Und así el relativen Koordinaten :
Declarar Handle btn1, btn2, btn3, Largo ende, rect#
Def GetWindowRect(2) !"USER32", "GetWindowRect"
Struct Brect = left&, top&, right&, bottom&
Dim Rect#, Brect
Ventana 600, 400
btn1 = Crear("Button", %HWnd, "Button1", 10, 10, 80, 25)
btn2 = Crear("Button", %HWnd, "Button2", 10, 50, 70, 25)
btn3 = Crear("Button", %HWnd, "Ende",    10, 90, 50, 25)
ende = 0

Sinestar encargado ende

    WaitInput

    If Clicked(btn1)

        GetWindowRect(btn1, Rect#)
        MessageBox("X1 : " + Str$(Rect#.left&) + "\nY1 : " + Str$(Rect#.top&) + "\nX2 : " + Str$(Rect#.right&) + "\nY2 : " + Str$(Rect#.bottom&), "Info", 0)

    ElseIf Clicked(btn2)

        GetWindowRect(btn2, Rect#)
        MessageBox("X1 : " + Str$(Rect#.left&) + "\nY1 : " + Str$(Rect#.top&) + "\nX2 : " + Str$(Rect#.right&) + "\nY2 : " + Str$(Rect#.bottom&), "Info", 0)

    ElseIf Clicked(btn3)

        GetWindowRect(btn3, Rect#)
        MessageBox("X1 : " + Str$(Rect#.left&) + "\nY1 : " + Str$(Rect#.top&) + "\nX2 : " + Str$(Rect#.right&) + "\nY2 : " + Str$(Rect#.bottom&), "Info", 0)
        ende = 1

    EndIf

EndWhile

Disponer Rect#
End

Müßte una continuación sólo wegen el Ventana umrechnen, o.
dieses berücksichtigen.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
28.08.2021  
 




Michael
Hettner
Gracias, el funktioniert. ;)
 
28.08.2021  
 




p.specht

Yo wäre muy a el Programmteil interessiert, con el Buttons movido voluntad puede. Am Principio zumindest. Mir fällt sólo Löschen y neues Crear a Mausposition una (en XProfan-11.2a free) ...
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
28.08.2021  
 




Thomas
Freier
Yo verwende meist:
 $H windows.ph
 $H messages.ph
STRUCT RECT = Left&,Righ&,Top&,Bottom&
Declarar appexit%
Ventana de Estilo $003F
Título de la ventana "anklicken y mover "
Ventana 207,114 - 771,611
Cls ~GetSysColor(15)
UseFont "MS Sans Serif",13,0,0,0,0
SetDialogFont 1
Var Text& = Crear("Text",%hwnd,"veschieb mich",10,10,100,24)
Var Group& = Crear("Groupbox",%hwnd,"veschieb mich",240,240,300,300)
Var Button& = Crear("Button",%hwnd,"veschieb mich",140,10,100,24)
Var R# = New(RECT)

Sinestar encargado appexit%

    WaitInput
    ~EnumChildWindows(%hwnd,ProcAddr("MoveIt",2),MakeLong(%mousex,%mousey))

    If %key = 2

        Disponer hdr#
        Disponer R#
        appexit%=1

    Endif

EndWhile

Proc MoveIt

    Parámetros wnd&,lParam&
    ~GetClientRect(wnd&,R#)
    ~MapWindowPoints(wnd&,%hwnd,R#,2)

    If ~PtInRect(R#,LoWord(lParam&),HiWord(lParam&))

        ~Captura de lanzamiento()
        UseCursor 5
        SendMessage(wnd&,~WM_SYSCOMMAND,~SC_MOVE+1,0)
        UseCursor 0
        Volver 0

    endif

    Volver 1

ENDPROC

 
Gruß Thomas
Windows XP SP2, XProfan X2
28.08.2021  
 




p.specht

Voll krass extrageil! Tausend Dank, Thomas!
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
28.08.2021  
 



Respuesta


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

4.500 Views

Untitledvor 0 min.
Georg Teles14.05.2024
Sven Bader21.11.2023
Michael Hettner21.09.2023
Axel Berse13.08.2023
Más...

Themeninformationen



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