PB macht nur aktionen insofern man im Fenster ist?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

PB macht nur aktionen insofern man im Fenster ist?

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

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

Beitrag von Kiffi »

> Setze ich da Befehle falsch

ja

> oder ist das normal?

nein
a²+b²=mc²
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Vermutlich hast du Waitwindowevent() verwendest.
Dann benutz WindowEvent()
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Danke.
Und das Flackern von Gadgets bekomme ich durch en Sleep_() weg oder hab ich doch recht?
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag von Leo »

Sleep_() ist okay, Delay() ist besser, da es portabel ist.
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag 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
Antworten