(WinAPI) Frage zum Startmenü (Windows-Taste) und Focus

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

(WinAPI) Frage zum Startmenü (Windows-Taste) und Focus

Beitrag von nco2k »

hi folks,

im folgenden beispiel, wird das startmenü aufgerufen, sobald der knopf gedrückt wurde. mein programm verliert auch anschliessend den fokus, so wie es auch sein sollte. wenn ich jetzt jedoch die windows taste drücke, um das startmenü zu schliessen, kriegt mein programm den fokus nicht zurück. wie kann ich das nun beheben und wie kriege ich eigentlich raus, ob das startmenü schon aufgeklappt ist oder nicht??

Code: Alles auswählen

If OpenWindow(0, 0, 0, 250, 100, #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Test")
  If CreateGadgetList(WindowID())
    ButtonGadget(0, 5, 5, 240, 90, "Klick Mich!")
  EndIf
  AddKeyboardShortcut(0, #PB_Shortcut_Escape, 0)
EndIf
  
Repeat
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget
    GadgetID = EventGadgetID()
    If GadgetID = 0
      SetForegroundWindow_(FindWindow_("Shell_TrayWnd", 0))
      PostMessage_(GetWindow_(FindWindow_("Shell_TrayWnd", 0), #GW_CHILD), #WM_LBUTTONDOWN, 0, 0)
    EndIf
  ElseIf Event = #PB_EventMenu
    MenuID = EventMenuID()
    If MenuID = 0
      End
    EndIf
  EndIf
Until Event = #PB_EventCloseWindow
  
End
c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
netfreak
Beiträge: 91
Registriert: 23.10.2004 18:30
Kontaktdaten:

Beitrag von netfreak »

Was meinst du mit fokus? Oder was ist fokus?
mfg
netfreak
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

ganz auf die schnelle... wenn dein fenster "aktiv" ist.

gadgets haben auch einen. schau dir buttons z.b. an. wenn du draufklickst bildet sich ein gestrichelter rand im button. das ist z.b. ein fokus.

setz folgendes in die repeat schleife ein und du wirst es sehen.

Code: Alles auswählen

If GetForegroundWindow_() = WindowID()
  Debug "Fenster ist aktiv und hat den Fokus!"
Else
  Debug "Fenster ist inaktiv und hat keinen Fokus!"
EndIf
c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Antworten