Seite 1 von 1

PB macht nur aktionen insofern man im Fenster ist?

Verfasst: 28.07.2005 17:55
von Blackskyliner
Hallo ich habe mal ne Frage. Warum macht PB nur Aktionen wenn man mit dem Courser im Fenster ist? Setze ich da Befehle falsch oder ist das normal?
Was kann ich dagegen tun? Weil sonst bringt mir der MP3-Player hier nix wenn ich immer reingehen muss :D

Re: PB macht nur aktionen insofern man im Fenster ist?

Verfasst: 28.07.2005 18:03
von Kiffi
> Setze ich da Befehle falsch

ja

> oder ist das normal?

nein

Verfasst: 28.07.2005 18:05
von Batze
Vermutlich hast du Waitwindowevent() verwendest.
Dann benutz WindowEvent()

Verfasst: 28.07.2005 18:15
von Blackskyliner
Danke.
Und das Flackern von Gadgets bekomme ich durch en Sleep_() weg oder hab ich doch recht?

Verfasst: 28.07.2005 18:16
von Leo
Sleep_() ist okay, Delay() ist besser, da es portabel ist.

Verfasst: 28.07.2005 18:17
von Blackskyliner
und ist das hier relativ Performanter Code?:
Nicht vergessen Seit 4 Tagen PureBasic!

Code: Alles auswählen

; PureBasic Visual Designer v3.90 build 1361


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #LOAD
  #Playlist
  #PLAY
  #PAUSE
  #RESUME
  #STOP
  #QUIT
  #TIME_Total
  #Slash
  #TIME_Current
EndEnumeration

;- Audio Constants
;
Enumeration
  #AUDIO_ID
EndEnumeration
; BalloonTip Constants
#TOOLTIP_NO_ICON      = 0
#TOOLTIP_INFO_ICON    = 1
#TOOLTIP_WARNING_ICON = 2
#TOOLTIP_ERROR_ICON   = 3

Procedure BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
  
  ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID,0,GetModuleHandle_(0),0)
  SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),0)
  SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
  SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,180)
  Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO)
  Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hWnd=GadgetID(Gadget)
  Balloon\uId=GadgetID(Gadget)
  Balloon\lpszText=@Text$
  SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
  If Title$ > ""
    SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
  EndIf
  
EndProcedure

If OpenWindow(#Window_0, 270, 233, 359, 204,  #PB_Window_TitleBar|#PB_Window_MinimizeGadget , "MP3-Player")
  If CreateGadgetList(WindowID())
    ButtonGadget(#LOAD, 0, 180, 60, 25, "Laden")
    BalloonTip(WindowID(), #LOAD, "Musikstück laden", "", #TOOLTIP_NO_ICON)
    ListViewGadget(#Playlist, 0, 0, 360, 165)
    BalloonTip(WindowID(), #Playlist, "PlayList", "", #TOOLTIP_NO_ICON)
    ButtonGadget(#PLAY, 60, 180, 60, 25, "Abspielen")
    BalloonTip(WindowID(), #PLAY, "Musikstück abspielen", "", #TOOLTIP_NO_ICON)
    ButtonGadget(#PAUSE, 120, 180, 60, 25, "Anhalten")
    BalloonTip(WindowID(), #PAUSE, "Musikstück anhalten", "", #TOOLTIP_NO_ICON)
    ButtonGadget(#RESUME, 180, 180, 60, 25, "Fortsetzen")
    BalloonTip(WindowID(), #RESUME, "Musikstück fortsetzen", "", #TOOLTIP_NO_ICON)
    ButtonGadget(#STOP, 240, 180, 60, 25, "Stop")
    BalloonTip(WindowID(), #STOP, "Musikstück stoppen", "", #TOOLTIP_NO_ICON)
    ButtonGadget(#QUIT, 300, 180, 60, 25, "Beenden")
    BalloonTip(WindowID(), #QUIT, "Player Beenden", "", #TOOLTIP_NO_ICON)
    TextGadget(#TIME_Total, 55, 165, 45, 15, "00:00:00")
    BalloonTip(WindowID(), #TIME_Total, "Zeit Total", "", #TOOLTIP_NO_ICON)
    TextGadget(#Slash, 45, 165, 10, 15, "/")
    BalloonTip(WindowID(), #Slash, "Slash ? O.o  :D ;)", "", #TOOLTIP_NO_ICON)
    TextGadget(#TIME_Current, 0, 165, 45, 15, "00:00:00")
    BalloonTip(WindowID(), #TIME_Current, "Verstrichene Zeit", "", #TOOLTIP_NO_ICON)
  EndIf

  Repeat
    EventID.l = WindowEvent()
    
    If EventID = #PB_Event_CloseWindow
      Quit.l = 1
    EndIf
    If EventID = #WM_KEYDOWN
      If EventwParam() = #VK_Escape
        Quit.l = 1
      EndIf 
    EndIf
    
    If IsAudioZPlaying(#AUDIO_ID)
      SetGadgetText(#TIME_Current, PositionAudioZTime(GetAudioZState(#AUDIO_ID)))
      Delay(50)
    EndIf 
    
    If EventID = #PB_Event_Gadget
      Select EventGadgetID()
        Case #LOAD
          File$ = OpenFileRequester("Lied auswählen", "c:\","MpegLayer3 (*.mp3)|*.mp3",0)
            ListID.l = CountGadgetItems(#Playlist)
            If ListID <> 0
              AddGadgetItem(#Playlist,ListID,File$,0)
            Else
              AddGadgetItem(#Playlist,0,File$,0)
            EndIf
        Case #QUIT
          Quit.l = 1
        Case #PLAY
          If IsAudioZPlaying(#AUDIO_ID)
            MessageRequester("Fehler","Es wird zuzeit noch ein Lied gespielt.")
          Else 
            OpenAudioZ(#AUDIO_ID,GetGadgetItemText(#Playlist,GetGadgetState(#Playlist),0))
            PlayAudioZ(#AUDIO_ID)
            SetGadgetText(#TIME_Total, PositionAudioZTime(GetAudioZLength(#AUDIO_ID)))
          EndIf 
        Case #STOP
          StopAudioZ(#AUDIO_ID)
          FreeAudioZ(#AUDIO_ID)
        Case #RESUME
          ResumeAudioZ(#AUDIO_ID)
        Case #PAUSE
          PauseAudioZ(#AUDIO_ID)
      EndSelect
    EndIf
  Until Quit=1
  
EndIf
EDIT
Hab Sleep in Delay gemacht und hab das in die IsPlay IF genommen