Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » System

Fenster in den Vordergrund holen

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.AdministratorSebastian 25.07.2008

Startet man aus der eigenen Anwendung heraus eine andere, so ist es möglich, dass das Fenster der eigenen Anwendung dauerhaft den Focus verliert, also in den Hintergrund verschwindet. Um das Fenster nach dem Starten der externen Anwendung wieder in den Vordergrund zu holen, kann man wie im folgenden Code-Beispiel gezeigt vorgehen:

'
'  FreeBASIC-Fenster in den Vordergrund bringen
'  Getestet mit FreeBASIC 0.20.0 SVN (Win)
'
'  Basiert auf ActiveVB-Tipp Nr. 214 (www.activevb.de)
'  Portiert nach FreeBASIC und im Funktionsumfang erweitert
'  durch Sebastian - 25.07.2008 - www.freebasic-portal.de
'
'  Der Quelltext kann frei verwendet werden.
'  Für eventuelle Schäden wird nicht gehaftet.
'

' ==== WinAPI Typendefinitionen ====
#INCLUDE ONCE "windows.bi"


' ==== Eigene Fenster-Nach-Vorne-SUB ====
DECLARE SUB AbNachVorn ()

' ==== SUB zur Erzeugung des Testbilds ====
DECLARE SUB Testbild ()

CONST Fenstertitel = "Test-o-matic"

Randomize TIMER

SCREEN 12
WINDOWTITLE Fenstertitel
Testbild

SHELL "start notepad"
SLEEP 3000
AbNachVorn()

SLEEP: END

SUB Testbild ()
    DIM AS INTEGER i, PosX, PosY, Radius, Farbe, MaxRadius=30
    FOR i = 1 TO 150
        PosX = INT(RND*639)+1
        PosY = INT(RND*479)+1
        Radius = INT(RND*MaxRadius)+1
        Farbe = INT(RND*15)+1
        CIRCLE (PosX,PosY),Radius,Farbe
    NEXT i
END SUB

SUB AbNachVorn ()
    DIM AS HANDLE   Handle
    DIM AS INTEGER  Result
    DIM AS WINDOWPLACEMENT WndPlcmt
    Handle = FindWindow(0, STRPTR(Fenstertitel))
    SetWindowPos Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
    SetWindowPos Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
    SetFocus Handle
    WITH WndPlcmt
        .Length = SIZEOF(WndPlcmt)
        Result = GetWindowPlacement(Handle, @WndPlcmt)
        IF Result THEN
            IF .showCmd = SW_SHOWMINIMIZED THEN
                .flags = 0
                .showCmd = SW_SHOWNORMAL
                Result = SetWindowPlacement(Handle, @WndPlcmt)
            ELSE
                SetForegroundWindow(Handle)
                Result = BringWindowToTop(Handle)
            END IF
        END IF
    END WITH
END SUB

Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 25.07.2008 von AdministratorSebastian angelegt.
  • Die aktuellste Version wurde am 25.07.2008 von AdministratorSebastian gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen