Français
Forum

Position et Abmaße eines Buttons ermitteln

 
- page 1 -



Michael
Hettner
Salut,
comment peux je qui Position et qui Abmaße eines Buttons im Hauptfenster ermitteln?
 
27.08.2021  
 



« 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

 
Gruß Thomas
Windows XP SP2, XProfan X2
28.08.2021  
 




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.
 
27.08.2021  
 




RudiB.
probiers la fois avec setWindowPos Handle,%mousex,%mousey
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
27.08.2021  
 




RudiB.
hab quoi trouvé... [...] 

ensuite encore dans qui Whilenot ende& Boucle pour dem Waitinput
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
27.08.2021  
 




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. ;)
 
28.08.2021  
 




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 11
Computer: 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

 
Gruß Thomas
Windows XP SP2, XProfan X2
28.08.2021  
 




p.specht

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



répondre


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

4.481 Views

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

Themeninformationen



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