Deutsch
Quelltexte/ Codesnippets

Api Bestimmen Fenstereigenschaften Hauptfenster Per

 

KompilierenMarkierenSeparieren
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
SWP_NOOWNERZORDER = $200 = 512
 
16.07.2007  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.269 Betrachtungen

Unbenanntvor 0 min.
Thomas Freier26.01.2024
H.Brill13.09.2022
AndreasS08.12.2018
Achim Engelhardt21.10.2014
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie