| |
|
|
- page 1 - |
|
Michael Hettner | Salut, comment peux je qui Position et qui Abmaße eines Buttons im Hauptfenster ermitteln? |
|
|
| |
|
|
|
« cette Beitrag wurde comme Solution gekennzeichnet. » |
|
Thomas Freier | je verwende meist:
$H windows.ph
$H messages.ph
STRUCT RECT = Left&,Righ&,Top&,Bottom&
Déclarer appexit%
Fenêtre Style $003F
Titre de la fenêtre "anklicken et Déplacer "
Fenêtre 207,114 - 771,611
Cls ~GetSysColor(15)
UseFont "MS Sans Serif",13,0,0,0,0
SetDialogFont 1
Var Text& = Créer("Text",%hwnd,"veschieb mich",10,10,100,24)
Var Group& = Créer("Groupbox",%hwnd,"veschieb mich",240,240,300,300)
Var Button& = Créer("Button",%hwnd,"veschieb mich",140,10,100,24)
Var R# = New(RECT)
WhileNot appexit%
WaitInput
~EnumChildWindows(%hwnd,ProcAddr("MoveIt",2),MakeLong(%mousex,%mousey))
Si %clé = 2
Dispose hdr#
Dispose R#
appexit%=1
Endif
Endwhile
Proc MoveIt
Paramètres wnd&,lParam&
~GetClientRect(wnd&,R#)
~MapWindowPoints(wnd&,%hwnd,R#,2)
Si ~PtInRect(R#,LoWord(lParam&),HiWord(lParam&))
~Capture de sortie()
UseCursor 5
SendMessage(wnd&,~WM_SYSCOMMAND,~SC_MOVE+1,0)
UseCursor 0
Retour 0
endif
Retour 1
ENDPROC
|
|
|
| |
|
|
|
|
p.specht
| veux du den Button platzieren? avec souris linke obere coin anfahren et per %mousex, %mousey auslesen. Gleiches avec il rechten unteren coin, cela gibt ensuite abzüglich qui auparavant ausgelesenen Werte qui Taille.
chez Buttons dans fremden Programmtexten müsstes du cela Handle savons, ensuite wäre es probablement einfacher. dans eignen Programmen savoir du oui qui Werte, qui du beim Créer verwendet la hâte bereits ... |
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 27.08.2021 ▲ |
|
|
|
|
Michael Hettner | qui Buttons peut dans mon Programme libre déménagé volonté. qui Positionen devoir ensuite dans un INI-Dossier geschrieben volonté, so cela beim prochain Programmaufruf sich qui Buttons wieder am gleichen Fleck befinden. |
|
|
| |
|
|
|
RudiB. | probiers la fois avec setWindowPos Handle,%mousex,%mousey |
|
|
| |
|
|
|
RudiB. | hab quoi trouvé... [...]
ensuite encore dans qui Whilenot ende& Boucle pour dem Waitinput
|
|
|
| |
|
|
|
H.Brill | qui Abmaße aller oui simple :
Déclarer Handle btn1, btn2, btn3, Long ende
Fenêtre 600, 400
btn1 = Créer("Button", %HWnd, "Button1", 10, 10, 80, 25)
btn2 = Créer("Button", %HWnd, "Button2", 10, 50, 70, 25)
btn3 = Créer("Button", %HWnd, "Ende", 10, 90, 50, 25)
ende = 0
Whilenot ende
WaitInput
Si 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
Fin
et so qui relativen Koordinaten :
Déclarer Handle btn1, btn2, btn3, Long ende, rect#
Def GetWindowRect(2) !"User32", "GetWindowRect"
Struct Brect = left&, top&, right&, bottom&
Faible Rect#, Brect
Fenêtre 600, 400
btn1 = Créer("Button", %HWnd, "Button1", 10, 10, 80, 25)
btn2 = Créer("Button", %HWnd, "Button2", 10, 50, 70, 25)
btn3 = Créer("Button", %HWnd, "Ende", 10, 90, 50, 25)
ende = 0
Whilenot ende
WaitInput
Si 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
Dispose Rect#
Fin
Müßte on ensuite seulement à cause de dem la fenêtre umrechnen, bzw. cet 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 | merci, cela funktioniert. ;) |
|
|
| |
|
|
|
p.specht
| je wäre très à dem Programmteil intéressé, avec dem Buttons déménagé volonté peut. Am Prinzip zumindest. Mir fällt seulement Effacer et nouveau Créer à Mausposition un (dans 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 | je verwende meist:
$H windows.ph
$H messages.ph
STRUCT RECT = Left&,Righ&,Top&,Bottom&
Déclarer appexit%
Fenêtre Style $003F
Titre de la fenêtre "anklicken et Déplacer "
Fenêtre 207,114 - 771,611
Cls ~GetSysColor(15)
UseFont "MS Sans Serif",13,0,0,0,0
SetDialogFont 1
Var Text& = Créer("Text",%hwnd,"veschieb mich",10,10,100,24)
Var Group& = Créer("Groupbox",%hwnd,"veschieb mich",240,240,300,300)
Var Button& = Créer("Button",%hwnd,"veschieb mich",140,10,100,24)
Var R# = New(RECT)
WhileNot appexit%
WaitInput
~EnumChildWindows(%hwnd,ProcAddr("MoveIt",2),MakeLong(%mousex,%mousey))
Si %clé = 2
Dispose hdr#
Dispose R#
appexit%=1
Endif
Endwhile
Proc MoveIt
Paramètres wnd&,lParam&
~GetClientRect(wnd&,R#)
~MapWindowPoints(wnd&,%hwnd,R#,2)
Si ~PtInRect(R#,LoWord(lParam&),HiWord(lParam&))
~Capture de sortie()
UseCursor 5
SendMessage(wnd&,~WM_SYSCOMMAND,~SC_MOVE+1,0)
UseCursor 0
Retour 0
endif
Retour 1
ENDPROC
|
|
|
| |
|
|
|
p.specht
| Voll krass extrageil! mille Dank, Thomas! |
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 28.08.2021 ▲ |
|
|
|