Code-Beispiel
Fenster in den Vordergrund holen
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | Sebastian | 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 Sebastian angelegt.
- Die aktuellste Version wurde am 25.07.2008 von Sebastian gespeichert.
|
|