| |
|
|
Julian Schmidt | Hallo,
Bei SetWindowPos oder Movewindow stört mich jedesmal das man als Parameter auch eine neue Position angeben muss. Man kann zwar per GetWindowRect die Größe ermitteln und angeben aber dies erscheint mir als zu umständlich.
Gibt es bereits irgendeinen anderen Befehl mit dem dies einfacher geht? Wenn nicht wünsche ich mir solch eine Funktion (SetWindowSize o.ä.) für ein künftiges XProfan. Ein extra Befehl für die 'Fensterposition in der Hierarchie' würde mich auch freuen!
LG
Julian57 |
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 06.08.2011 ▲ |
|
|
|
|
Jörg Sellmeyer | Na - dafür braucht man aber keine neuen Befehle. Das geht ganz locker mit zwei Prozeduren:
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 06.08.2011 ▲ |
|
|
|
|
| |
|
| |
|
|
|
Julian Schmidt | Jörg Sellmeyer (06.08.11)
Na - dafür braucht man aber keine neuen Befehle. Das geht ganz locker mit zwei Prozeduren:
Hab auch geschrieben
Jörg Sellmeyer (06.08.11)
Gibt es bereits irgendeinen anderen Befehl mit dem dies einfacher geht? Wenn nicht wünsche ich mir solch eine Funktion (SetWindowSize o.ä.) für ein künftiges XProfan.
Nachtrag: @Jörg Deine Prozeduren beschränken sich leider auf das Hauptfenster! Gibt es solch eine Prozedur auch für andere Handles? %WinLeft, %WinBottom,... ist doch auf hwnd beschränkt, oder? |
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 06.08.2011 ▲ |
|
|
|
|
Dieter Zornow | Ab X2 reichen bei Setwindowpos auch nur 2 Parameter, dann wird das Fenster nur verschoben, aber die Größe bleibt. Du hast doch X2 oder ? |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 07.08.2011 ▲ |
|
|
|
|
Julian Schmidt | Dieter Zornow (07.08.11)
Ab X2 reichen bei Setwindowpos auch nur 2 Parameter, dann wird das Fenster nur verschoben, aber die Größe bleibt. Du hast doch X2 oder ?
Das funktioniert auch bereit bei früheren XProfan Versionen! Ich wollte aber eig. die Fenstergröße verändern. Und ja ich hab X2! |
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 07.08.2011 ▲ |
|
|
|
|
Jörg Sellmeyer | Kannst Du da was mit anfangen?
$H Structs.ph
$H Windows.ph
Struct Rect = ~RECT
Declare Window#
Dim Window#,Rect
Declare Werte$
Cls
VAR Edit& = Create("Edit",%hwnd,"",10,40,200,24)
While 1
WaitInput
~GetWindowRect(Edit&,Window#)
~MapWindowPoints(%desktop,%hwnd,Window#,2)
With Window#
.Right& = .Right& - .Left&
.Bottom& = .Bottom& - .Top&
Werte$ = .Left&,.Top&,.Right&,.Bottom&
SetText Edit&,Werte$
EndWith
Wend
[OFFTOPIC]@iF: Du könntest dem Formatierer noch beibringen, daß man auch With und EndWith einrücken kann[/OFFTOPIC] |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.08.2011 ▲ |
|
|
|
|
Julian Schmidt | GetWindowRect ist mir bereits ein Begriff, dennoch bekomme ich es nicht in eine Prozedur. :p
$H Structs.ph
$H Windows.ph
Struct Rect = ~RECT
Declare Window#
Dim Window#,Rect
Cls
waitinput
WindowSize(%hwnd,400,150)
waitinput
WindowZ(%hwnd,-1)
waitinput
Proc WindowSize
Parameters hdl&,b%,h%
~GetWindowRect(hdl&,Window#)
~MapWindowPoints(%desktop,%hwnd,Window#,2)
SetWindowPos hdl& = Window#.Left&,Window#.Top& - b%,h%
EndProc
Proc WindowZ
Parameters hdl&, modus%
~GetWindowRect(hdl&,Window#)
~MapWindowPoints(%desktop,%hwnd,Window#,2)
With Window#
SetWindowPos hdl& = .Left&,.Top& - (.Right& - .Left&),(.Bottom& - .Top&); modus%
EndWith
EndProc
|
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 07.08.2011 ▲ |
|
|
|
|
Jörg Sellmeyer | WindowZ ist doch eine Prozedur, die nur für das Hauptfenster Sinn ergibt. Warum nimmst Du da nicht die Prozedur, die ich oben gepostet habe? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.08.2011 ▲ |
|
|
|
|
| [OFFTOPIC] Jörg Sellmeyer (07.08.11)@iF: Du könntest dem Formatierer noch beibringen, daß man auch With und EndWith einrücken kann? Dis machsch! Nachtrag: Erledscht! [/OFFTOPIC] |
|
|
| |
|
|
|
Julian Schmidt | Jörg Sellmeyer (07.08.11)
WindowZ ist doch eine Prozedur, die nur für das Hauptfenster Sinn ergibt. Warum nimmst Du da nicht die Prozedur, die ich oben gepostet habe?
Auf Dialogfensters ergibt diese Funktion ebenfalls Sinn. Deine Prozedur oben ^^ ist aber durch %winleft, %wintop, ... an das Hauptfenster gebunden.
Window 0,0-%MaxX,%MaxY
var dg&=Create("Dialog",%hwnd,"Beispiel",0,0,0,0)
Setwindowpos dg&=200,100 - 500,300; -1
while 1
Endwhile
|
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 07.08.2011 ▲ |
|
|
|
|
Julian Schmidt |
Def @GetWindowRect(2) !"USER32", "GetWindowRect"
WindowTitle "Koordinaten"
Windowstyle 24
Window 0,0-640,440
waitinput
WindowSize(%hwnd,800,500)
WindowZ(%hwnd, -1)
waitinput
While 1
cls
locate 1,1
print "Eckpunkte bezogen auf Bildschirm:",WindowRect(%hwnd,"X-Pos"),", ",WindowRect(%hwnd,"Y-Pos")," - ",WindowRect(%hwnd,"Eckpunkt_X2"),", ",WindowRect(%hwnd,"Eckpunkt_Y2")
print "Breite: ",WindowRect(%hwnd,"Breite")," Höhe: ",WindowRect(%hwnd,"Höhe")
waitinput
Endwhile
Proc WindowRect
Parameters hdl&,Modus$
declare x%, b#
Dim b#,16
@GetWindowRect(hdl&,b#)
case Modus$="Breite" : x%=Long(b#,8)-Long(b#,0)
case Modus$="Höhe" : x%=Long(b#,12)-Long(b#,4)
case Modus$="Eckpunkt_X1" : x%=Long(b#,0)
case Modus$="Eckpunkt_Y1" : x%=Long(b#,4)
case Modus$="X-Pos" : x%=Long(b#,0)
case Modus$="Y-Pos" : x%=Long(b#,4)
case Modus$="Eckpunkt_X2" : x%=Long(b#,8)
case Modus$="Eckpunkt_Y2" : x%=Long(b#,12)
Dispose b#
Return x%
EndProc
Proc WindowSize
Parameters hdl&,b%,h%
SetWindowPos hdl& = WindowRect(hdl&,"X-Pos"),WindowRect(hdl&,"Y-Pos") - b%,h%
EndProc
Proc WindowZ
Parameters hdl&, modus%
SetWindowPos hdl& = WindowRect(hdl&,"X-Pos"),WindowRect(hdl&,"Y-Pos") - WindowRect(hdl&,"Breite"),WindowRect(hdl&,"Höhe"); modus%
EndProc
|
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 09.08.2011 ▲ |
|
|
|