Fenster in den Vordergrund bringen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Der Eisvogel

Betreff: Fenster in den Vordergrund bringen

BeitragDi, Sep 22, 2009 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
Ich würde mein Programm gerne auf Tastendruck in den Vordergrund bringen und aktivieren.
Ich hab schon zich Möglichkeiten ausprobiert, diese haben auch bei anderen Fenstern geklappt. Aber mein eigenes Blitz-Fenster hab ich nie nach vorne bekommen. Hier mal 2 Funktionen:
BlitzBasic: [AUSKLAPPEN]
Function SetForegroundWindowEx(hWndWindow)
lThreadWindow=CreateBank(4)
GetWindowThreadProcessId(hWndWindow,lThreadWindow)
lThreadForeWin=CreateBank(4)
GetWindowThreadProcessId(GetForegroundWindow(),lThreadForeWin)
If PeekInt(lThreadWindow,0)=PeekInt(lThreadForeWin,0) Then
Return SetForegroundWindow(hWnd)
Else
AttachThreadInput(lThreadForeWin,lThreadWindow,True)
ret=SetForegroundWindow(hWndWindow)
AttachThreadInput(lThreadForeWin,lThreadWindow,False)
Return ret
EndIf
End Function

BlitzBasic: [AUSKLAPPEN]
Function ActivateWindow(hWnd)
WINDOWPLACEMENT=CreateBank(44)
Result=GetWindowPlacement(hWnd,WINDOWPLACEMENT)
If Result Then
showCmd=PeekInt(WINDOWPLACEMENT,8)
If showCmd=2 Then
PokeInt(WINDOWPLACEMENT,4,0)
PokeInt(WINDOWPLACEMENT,8,1)
Result=SetWindowPlacement(hWnd,WINDOWPLACEMENT)
Else
SetForegroundWindow(hWnd)
Result=BringWindowToTop(hWnd)
EndIf
If Result Then Return True
EndIf
End Function


Warum funktionieren diese Funktionen bei anderen Fenster, aber nicht bei meinem Blitz-Fenster?
Kennt jmd eine Funktion, die bei Blitz-Fenstern funktioniert?

PS: Das ganze soll in B3D gemacht werden nicht in B+

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Nicdel

BeitragDi, Sep 22, 2009 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch mal den Befehl SetWindowPos.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Der Eisvogel

BeitragDi, Sep 22, 2009 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
API-Wiki hat Folgendes geschrieben:
HWND_TOP sorgt dafür, dass das Fenster über allen normalen Fenstern (der gleichen Anwendung) dargestellt wird. Da der Wert 0 ist, ist dies auch eine Art "Standardeinstellung".


Daruaf hatte ich auch als aller erstes gezählt. Sad
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Nicdel

BeitragDi, Sep 22, 2009 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Es funktioniert bei mir aber. Was denkst du, warum meine Uhr für den BCC immer im Vordergrund ist Wink
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Der Eisvogel

BeitragDi, Sep 22, 2009 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Na weil du TOPMOST machst. Das wird bei meinem Programm auch verwendet, als Einstellung. Aber wenn ich das Prog minimiere und auf Tastendruck wieder haben will. Dann bringt mir das nix.

EDIT: Du machst das gleiche wie der Task-Manager, wenn die Funktion "Immer im Vordergrund" aktiviert ist.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Nicdel

BeitragDi, Sep 22, 2009 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist also minimiert und du willst es wieder hervorholen?
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Der Eisvogel

BeitragDi, Sep 22, 2009 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Egal ob minimiert, oder einfach nur im Hintergrund, oder versteckt.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Nicdel

BeitragDi, Sep 22, 2009 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwie funktioniet kein Befehl, der das Fenster in der Vordergrund bringen soll...
Für minimierte und versteckte Fenster funktioniert ShowWindow(hwnd,SW_NORMAL).
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Der Eisvogel

BeitragDi, Sep 22, 2009 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem ShowWindow klappt leider auch nicht immer. Mein Problem ist, die oben genannten Befehle funktionieren bei anderen Fenstern, zB dem Editor, aber nicht bei B3D-Fenster, ich versteht das einfach nicht.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group