English
Source / code snippets

Api to determine Fenstereigenschaften Mainwindow Per

 

CompileMarkSeparation
Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Hauptfenster: Fenstereigenschaften per API bestimmen (auch Client-Bereich)
Die wichtigsten Infos zu Positionen
Def GetWindowPos(2) ! USER32, GetWindowRect
DEF GetClientPos(2) ! USER32,GetClientRect
Def SHTaskbarheight(2) ! SHELL32,SHAppBarMessage
Def SHTaskbarPos(2) ! SHELL32,SHAppBarMessage
DEF SPIUsableScreen(4) ! user32,SystemParametersInfoA
DEF MoveWindow(6) ! USER32,MoveWindow
Def GetCursorPos(1) ! USER32,GetCursorPos
DEF SetcursorPos(2) ! USER32,SetCursorPos
DEF ScreenToClient(2) ! USER32,ScreenToClient
DEF ClientToScreen(2) ! USER32,ClientToScreen
DEF SetWindowPos(7) ! USER32,SetWindowPos
Declare rect#,xpos&,ypos&,xRpos&,yRpos&

proc GetwindowPos

    Parameters hndl&
    case equ(%pcount,0):let hndl&=@getactiveWindow()
    DIM rect#,16
    GetWindowPos(hndl&,rect#)
    let xpos&=@long(rect#,0) links oben
    let ypos&=@long(rect#,4)
    let xRpos&=@long(rect#,8) rechts unten
    let yRpos&=@long(rect#,12)
    Clear rect#
    Dispose rect#

endproc

Proc GetClientPos

    Parameters hndl&
    case equ(%pcount,0):let hndl&=@getactiveWindow()
    Dim Rect#,16
    GetClientPos(hndl&,Rect#)
    let xpos&=@long(rect#,0) links oben
    let ypos&=@long(rect#,4)
    let xRpos&=@long(rect#,8) rechts unten
    let yRpos&=@long(rect#,12)
    Clear rect#
    Dispose Rect#

endproc

Proc GetTaskbarHeight

    Dim rect#,36
    Declare height&
    Long rect#,0=36
    SHTaskbarheight(5,rect#)
    Let height&=Long(rect#,28)
    Let height&=Sub(height&,Long(rect#,20))
    Clear rect#
    Dispose rect#
    Return height&

EndProc

Proc GetTaskbarPos

    Dim rect#,36
    Declare pos&
    Long rect#,0=36
    SHTaskbarPos(5,rect#)
    Let pos&=Long(rect#,12)
    Clear rect#
    Dispose rect#
    Return pos&

endproc

Proc UsableScreen

    Dim Rect#,16
    SPIUsableScreen(48,0,Rect#,0)
    let xpos&=@long(rect#,0) links oben
    let ypos&=@long(rect#,4)
    let xRpos&=@long(rect#,8) rechts unten
    let yRpos&=@long(rect#,12)
    Clear rect#
    Dispose Rect#

endproc

Proc MoveWindow

    Parameters Hndl&,x%,y%,Xl%,Yh%
    MoveWindow(hndl&,x%,y%,xl%,yh%,1) 1=repaint the Window

endproc

Proc Getcursor

    Parameters from%,hndl& from% 0=screen größer 0 = Window
    case equ(%Pcount,1):let hndl&=GetactiveWindow()
    Dim rect#,8
    Getcursorpos(rect#)
    case gt(from%,0):ScreenToClient(hndl&,rect#)
    xpos&=@long(rect#,0)
    ypos&=@long(rect#,4)
    clear rect#
    Dispose rect#

endproc

proc setcursor

    parameters x&,y&,where%,hndl& where% 0=screen, größer 0 =window
    case equ(%Pcount,3):let hndl&=GetactiveWindow()

    If equ(where%,0)

        Setcursorpos(x&,y&)

    else

        Dim rect#,8
        Long rect#,0=x&
        Long rect#,4=y&
        ClientToScreen(hndl&,rect#)
        Setcursorpos(@long(rect#,0),@long(rect#,4))
        clear rect#
        Dispose rect#

    endif

endproc

proc setwindow

    Parameters hndl&,zorder&,x&,y&,xl&,yh&,swp&
    SetWindowPos(hndl&,zorder&,x&,y&,xl&,yh&,swp&)

endproc

Beispiel
cls
Movewindow %hwnd,50,50,700,500
GetWindowPos
Print WindowPosition
Print Linke obere Ecke: ,xpos&;,;ypos&
Print Rechte untere Ecke:,Xrpos&;,;yRpos&
GetclientPos
Print InnerWindow
Print Linke obere Ecke: ,xpos&;,;ypos&
Print Rechte untere Ecke:,Xrpos&;,;yRpos&
UsableScreen
print Nutzbarer Bildschirm
Print Linke obere Ecke: ,xpos&;,;ypos&
Print Rechte untere Ecke:,Xrpos&;,;yRpos&
GetTaskbarPos
case Equ(@&(0),0):Print Die Taskbar ist links
case Equ(@&(0),1):Print Die Taskbar ist oben
case Equ(@&(0),2):Print Die Taskbar ist rechts
case Equ(@&(0),3):Print Die Taskbar ist unten
GetTaskbarHeight
Print Taskbarhöhe =,@&(0),Pixel
setcursor 50,50,1
Getcursor 1
Print Cursorposition= ,xpos&,,ypos&
setwindow %hwnd,0,60,60,700,500,256
waitinput
end
Werte für SetWindowPos
HWND_BOTTOM = 1
Letztes Window in der Schlange (Z-order)
HWND_NOTOPMOST = -2
Legt das Fenster unter alle topmost Fenster und überhalb der non topmost Fenster
HWND_TOP = 0
Legt das Fenster an die Spitze der Schlange (Z-order)
HWND_TOPMOST = -1
Macht das Fenster permanent topmost (über allen anderen Fenstern)
wFlags
Null oder mehr der folgenden Flags geben an, wie das Fenster zu bewegen ist
SWP_DRAWFRAME = $20 =32
das gleiche als SWP_FRAMECHANGED.
SWP_FRAMECHANGED = $20 =32
Volles neuzeichen des Fensters an der neuen Position
SWP_HIDEWINDOW = $80 =128
Fenster verstecken
SWP_NOACTIVATE = $10 = 16
Macht das Fenster nicht aktiv nach dem Bewegen, es sei denn
es war schon das aktive Fenster
SWP_NOCOPYBITS = $100 = 256
Es wird nicht neugezeichnet nach dem Bewegen, das heißt der gesamte Inhalt
ist gelöscht.
SWP_NOMOVE = $2 = 2
Das Fenster wird nicht bewegt
SWP_NOSIZE = $1 = 1
Das Fenster bekommt keine neue Größe
SWP_NOREDRAW = $8 =8
Entfernt nicht die Abbildung des Fenster an seiner bisherigen Position
es hinterläßt ein Geisterbild auf dem Bildschirm
SWP_NOZORDER = $4 =4
Wechselt nicht die Position in der Schlange (Z-order)
SWP_SHOWWINDOW = $40 = 64
Das Fenster ist versteckt<
class=s4 href='./../../function-references/XProfan/swpnoownerzorder/'>SWP_NOOWNERZORDER = $200 = 512
 
07/16/07  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

3.274 Views

Untitledvor 0 min.
Thomas Freier01/26/24
H.Brill09/13/22
AndreasS12/08/18
Achim Engelhardt10/21/14
More...

Themeninformationen

this Topic has 1 subscriber:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie