Timer hochzählen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag von D@nte »

0815 Lösung wäre wohl im Timerinterval den Fenstertitel zu aktualisieren (ist das überhaupt ne Fensteranwendung?!)

Ansonsten ggf hilft dir das weiter:
http://www.purearea.net/pb/CodeArchiv/W ... Taskbar.pb
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

jetzt mal ins blaue geraten (hab noch nie was in den systray gepackt)

das SysTrayIcon ist doch einem Image zugeordnet...

wenn du jetzt die uhr auf dieses Image malst, und dann das selbe Image erneut zuordnest,
könnte es im SysTray aktualisiert werden und aktueller zustand angezeigt....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag von D@nte »

Ich glaube deins funktioniert nicht Kaeru

Klar die Idee ist an sich gut, aber der Systray bzw AddSysTrayIcon() akzeptiert nur .ico sprich man bräuchte erstmal ne riesen Routine um überhaupt den Timer im richtigen Format darzustellen (kA wie sich das in Rechenzeit auswirkt), aber das viel größere Problem ist im Systray gibt's nur 'Images' in der Größe 16x16 und das ist glaubig nicht grad augenfreundlich
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

er sprach aber von systray...

nuja.. 16² ist schon recht winzig...

da wird digital nix, da passen nur vier zahlen hin, nicht mal der doppelpunkt (drittes von links)
als analog ginge das dann schon eher (zweites von rechts)

Bild

aber das mit dem aktualisieren müßte schon irgendwie gehen...
gibt doch schließlich ne menge tools, die im systray aktivität anzeigen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Kaeru Gaman hat geschrieben:nuja.. 16² ist schon recht winzig...
man kann ja mehrere Trayicons verwenden und muss dann nur noch darauf
achten, dass sie in der richtigen Reihenfolge erscheinen ;-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Helle
Beiträge: 566
Registriert: 11.11.2004 16:13
Wohnort: Magdeburg

Beitrag von Helle »

Ich hatte hier http://www.purebasic.fr/german/viewtopi ... highlight= mal sowas in der Richtung getrieben.

Gruss
Helle
DNA
Beiträge: 40
Registriert: 25.02.2006 23:54

Beitrag von DNA »

D@nte hat geschrieben:0815 Lösung wäre wohl im Timerinterval den Fenstertitel zu aktualisieren (ist das überhaupt ne Fensteranwendung?!)

Ansonsten ggf hilft dir das weiter:
http://www.purearea.net/pb/CodeArchiv/W ... Taskbar.pb
Das Beispiel im Link macht ja nicht das was ich gefragt habe. Soll ja nicht einfach drüber liegen, sondern dazugefügt werden.
Helle hat geschrieben:Ich hatte hier http://www.purebasic.fr/german/viewtopi ... highlight= mal sowas in der Richtung getrieben.

Gruss
Helle
das sieht zwar recht interessant aus, aber leider nicht das was ich wollte. So wie ich das hier sehe, muss die Windowsuhr aus einem Controllelement bestehen und nicht aus einem Icon.

Ich kann zB. über das Handle und dem Befehl ShowWindow die Uhrzeit verstecken. Was mich halt vermuten lässt, dass es sich nicht um ein Icon handelt.

Code: Alles auswählen

#TASKBAR  = "Shell_TrayWnd"
#ID_TRAY  = $12F
#ID_CLOCK = $12F
  
Procedure.l Clock_Show_Hide(bShowHide.b)
  Protected hWnd.l

  hWnd = GetDlgItem_(FindWindow_(#TASKBAR, #Null), #ID_TRAY)
  Debug hWnd
	hWnd = GetDlgItem_(hWnd, #ID_CLOCK)
	Debug hWnd
	
  If hWnd = #Null
    ProcedureReturn 0
  EndIf
  
  If bShowHide
    ShowWindow_(hWnd, #SW_SHOW)
  Else
    ShowWindow_(hWnd, #SW_HIDE)
  EndIf
  
  UpdateWindow_(hWnd)

  ProcedureReturn 1
EndProcedure

Clock_Show_Hide(#False)
Delay(3000)
Clock_Show_Hide(#True)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Wie isn' hiermit:

Code: Alles auswählen

TrayWnd = FindWindow_("Shell_TrayWnd", 0)
TrayNofifyWnd = FindWindowEx_(TrayWnd,0,"TrayNotifyWnd",0)

GetWindowRect_(TrayNofifyWnd,wrc.RECT)

#OFFSETCY = 40

STX = wrc\left
STW = wrc\right - wrc\left
STH = wrc\bottom - wrc\top

MoveWindow_(TrayNofifyWnd,STX - #OFFSETCY,0,STW + #OFFSETCY,STH,1)

OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

OpenWindow(1,STW,0,#OFFSETCY,STH,"",#WS_CHILD,TrayNofifyWnd)
CreateGadgetList(WindowID(1))
TextGadget(0,0,0,#OFFSETCY,STH,"00:00",#PB_Text_Border | #SS_CENTER | #SS_CENTERIMAGE)

SetGadgetColor(0,#PB_Gadget_BackColor,$808080)
SetGadgetColor(0,#PB_Gadget_FrontColor,#White)
SetTimer_(WindowID(0),0,1000,0)

Procedure WindowCallback(hWnd.l,uMsg.l,wParam.l,lParam.l)
	Static Seconds, Minutes
	
    Select uMsg
        Case #WM_TIMER        
    	Seconds + 1    	
    	If Seconds = 60 : Seconds = 0 : Minutes + 1 : EndIf    	    	
    	Time$ = RSet(Str(Minutes),2,"0") + ":" + RSet(Str(Seconds),2,"0")    	
 		SetGadgetText(0,Time$)
    EndSelect
     
    ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

SetWindowCallback(@WindowCallback())

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend

MoveWindow_(TrayNofifyWnd,STX,0,STW,STH,1)
Windows 10 Pro, 64-Bit / Outtakes | Derek
DNA
Beiträge: 40
Registriert: 25.02.2006 23:54

Beitrag von DNA »

Danke Fluid, das ist genau das richtige. :allright:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@Fluid
magst du das etwas ausführlicher kommentieren,
und dann in der CT&T-ecke posten?

wenn das posting dann noch die suchbegriffe "systray windows control element" enthält, isses perfekt. :allright:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten