| |
|
|
- Página 1 - |
|
Michael Hettner | ¡Hola, como kann Yo el Position y el Abmaße uno Buttons en el Ventana principal ermitteln? |
|
|
| |
|
|
|
« 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
|
|
|
| |
|
|
|
|
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. |
|
|
| |
|
|
|
RudiB. | probiers veces con setWindowPos Handle,%mousex,%mousey |
|
|
| |
|
|
|
RudiB. | tener qué gefunden... [...]
entonces en el Sinestar encargado ende& Bucle después de el Waitinput
|
|
|
| |
|
|
|
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. ;) |
|
|
| |
|
|
|
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 11Computer: 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
|
|
|
| |
|
|
|
p.specht
| Voll krass extrageil! Tausend Dank, Thomas! |
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 28.08.2021 ▲ |
|
|
|