Win aktiv oder nicht...?

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Win aktiv oder nicht...?

Beitrag von Kaeru Gaman »

ich hab da n kleines problem.

ich will testen, ob ein fester den fokus hat, damit ich ein game, das darin abläuft,
anhalten kann, wenn der benutzer ein anderes fenster benutzt...

leider hat ein klassischer flag-schalter

Code: Alles auswählen

        WinEvent = WindowEvent()
        If WinEvent = #PB_EventType_Focus
            Focus = 1
        EndIf
        If WinEvent = #PB_EventType_LostFocus
            Focus = 0
        EndIf
nicht den gewünschten effekt...

bitte um background in sachen Fenster, kenn mich da garnich aus...
wo liegt mein denkfehler?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ABBKlaus
Beiträge: 61
Registriert: 15.03.2006 22:09
Wohnort: Ratingen
Kontaktdaten:

Beitrag von ABBKlaus »

mit PB4B10 ganz einfach :

GetActiveWindow() Gibt die PB Nummer des Fensters zurück, welches aktuell den Fokus für Tastatureingaben hat.

MfG Klaus
PureBasicPower TailBite Printer_Lib / PDFBarcode / PrintBarcode / ExcelWriter
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> mit PB4B10 ganz einfach

thnx, aber ich benutz noch 3.94...


ich bin inzwischen so weit, dass entgegen der aussage in der help
#PB_EventType_Focus und #PB_EventType_LostFocus wohl doch nur für Gadgets gelten...

aber mit API komm ich auch nich ganz rum:

Code: Alles auswählen

If GetFocus_()<>WindowID(0)
    Focus = 0
Else
    Focus = 1
EndIf
liefert auch nicht das gewünschte ergebnis...


> welches aktuell den Fokus für Tastatureingaben hat.

schätze mal, dass "tastatur" hierbei redundant ist?
mir geht es allgemein um den fokus, denke, das ist damit doch gemeint...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

sowas? :?

Code: Alles auswählen

OpenWindow(0,0,0,100,100,"Hello",#PB_Window_SystemMenu)

Repeat
  If GetForegroundWindow_() = WindowID(0)
    Debug "Hat den Focus"
  Else
    Debug "Hat den Focus nicht."
  EndIf

  Delay(100)
Until WindowEvent() = #PB_Event_CloseWindow

edit:
Beispiel ist zwar für PB4, sollte aber keine Probleme machen, den Befehl OpenWindow() zu portieren :mrgreen:
-.-"
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

yo.. thnx für den Tip mit GetForgroundWindow().. muss ich auch mal antesten...

hab grad noch nen anderen käfer bemerkt.. muss erstmal den finden und sehen, obs die ganze zeit an dem lag...

@all
thnx erstmal für die hilfe..
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ok leutz... mal absolut shame on me...

Code: Alles auswählen

        If GetFocus_()<>WindowID(0) 
            Focus = 0 
        Else 
            Focus = 1 
        EndIf
funktioniert, der käfer steckte woanders...

danke für die anderen hinweise... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten