Seite 1 von 1

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

Verfasst: 04.11.2004 18:39
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

Verfasst: 04.11.2004 19:01
von netfreak
Was meinst du mit fokus? Oder was ist fokus?

Verfasst: 04.11.2004 19:17
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