ProgressBarGadget mit Text (Windows, für Anfänger & Profis)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Tommy
Spassvogel
Beiträge: 319
Registriert: 17.10.2013 14:36

ProgressBarGadget mit Text (Windows, für Anfänger & Profis)

Beitrag von Tommy »

Code gelöscht weil der nich mir gehörte.
Zuletzt geändert von Tommy am 27.01.2015 12:05, insgesamt 2-mal geändert.
PB 5.41 x64
GronkhLP
Beiträge: 72
Registriert: 14.11.2013 22:43
Wohnort: Köln
Kontaktdaten:

Re: ProgressBarGadget mit Text (Windows, für Anfänger & Prof

Beitrag von GronkhLP »

Huch, du bringst mehrfach täglich Codes heraus, die ich zwar nicht brauche, aber dieser Code ist dir gut gelungen und ist sogar für mein aktuelles Projekt sehr nützlich. :allright: Ich werde meine billige ProgressBar durch deins ersetzen.
Danke für den großen Aufwand und für die Bereitstellung. :)
Lebe Grüße
Bild
Benutzeravatar
JMaker
Beiträge: 102
Registriert: 19.01.2015 10:18

Re: ProgressBarGadget mit Text (Windows, für Anfänger & Prof

Beitrag von JMaker »

danke Tommy :allright:
Und die Textfarbe ändert sich auch automatisch, dachte es wäre eintönig, aber nein, find ich super :allright:
Ich benutze Pure Basic 5.30 auf Microsoft Windows 7.
Gruß
JM
Benutzeravatar
Tommy
Spassvogel
Beiträge: 319
Registriert: 17.10.2013 14:36

Re: ProgressBarGadget mit Text (Windows, für Anfänger & Prof

Beitrag von Tommy »

Danke, das hört man gern :)
Zuletzt geändert von Tommy am 26.01.2015 14:48, insgesamt 1-mal geändert.
PB 5.41 x64
Benutzeravatar
chi
Beiträge: 90
Registriert: 17.05.2007 09:30
Wohnort: Austria

Re: ProgressBarGadget mit Text (Windows, für Anfänger & Prof

Beitrag von chi »

Wenn's jemand "themed" braucht ;)

Code: Alles auswählen

;;; [Themed ProgressBarGadget with Counter] by chi (2015)

Prototype _OpenThemeData(hWnd, pszClassList.p-unicode)
Prototype _CloseThemeData(hTheme)
Prototype _DrawThemeBackground(hTheme, hdc, iPartId, iStateId, pRect, pClipRect)

If OpenLibrary(0, "uxtheme.dll")
  Global OpenThemeData_._OpenThemeData = GetFunction(0, "OpenThemeData")
  Global DrawThemeBackground_._DrawThemeBackground =  GetFunction(0, "DrawThemeBackground")
  Global CloseThemeData_._CloseThemeData = GetFunction(0, "CloseThemeData")
EndIf

#PBM_GETRANGE = #WM_USER + 7

Global ProgBarProc

Procedure ProgBarCB(hWnd, Msg, wParam, lParam)
  Select Msg
      
    Case #PBM_SETPOS
      hdc = GetDC_(hWnd)
      
      GetClientRect_(hWnd, progbar.RECT)
      GetClientRect_(hWnd, progstate.RECT)
      range = SendMessage_(hwnd, #PBM_GETRANGE, #False, 0)
      
      mdc = CreateCompatibleDC_(hdc)
      bmp = CreateCompatibleBitmap_(hdc, progbar\right, progbar\bottom)
      SelectObject_(mdc, bmp)
      
      theme = OpenThemeData_(hWnd, "PROGRESS")
        DrawThemeBackground_(theme, mdc, 1, 1, progbar, 0)
        progstate\right / range * wParam
        DrawThemeBackground_(theme, mdc, 5, 1, progstate, 0)
      CloseThemeData_(theme)
      
      SelectObject_(mdc, GetStockObject_(#DEFAULT_GUI_FONT))
      SetBkMode_(mdc, #TRANSPARENT)
      DrawText_(mdc, Str(wParam) + "%", -1, progbar, #DT_CENTER|#DT_VCENTER|#DT_SINGLELINE)
      
      BitBlt_(hdc, 0, 0, progbar\right, progbar\bottom, mdc, 0, 0, #SRCCOPY)
      
      DeleteObject_(bmp)
      DeleteDC_(mdc)
      ReleaseDC_(hWnd, hdc)
      ProcedureReturn 0
      
  EndSelect
  ProcedureReturn CallWindowProc_(ProgBarProc, hWnd, Msg, wParam, lParam)
EndProcedure


OpenWindow(0, 0, 0, 600, 150, "Themed ProgressBarGadget with Counter", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)

ProgressBarGadget(1, 50, 60, 500, 20, 0, 100)
ProgBarProc = SetWindowLongPtr_(GadgetID(1), #GWL_WNDPROC, @ProgBarCB())

AddWindowTimer(0, 1, 100)

Repeat
  event = WaitWindowEvent()
  Select event
      
    Case #PB_Event_Timer
      Select EventTimer()
          
        Case 1
          x+1
          If x > 100 : x = 0 : EndIf
          SetGadgetState(1, x)
          
      EndSelect
  EndSelect
Until event=#PB_Event_CloseWindow

walbus
Beiträge: 137
Registriert: 03.03.2013 20:50

Re: ProgressBarGadget mit Text (Windows, für Anfänger & Prof

Beitrag von walbus »

Ich verstehe nur nicht den Nutzen der Sache.
Es ergibt meiner bescheidenen Meinung nach keinen Sinn eine Prozentanzeige in die Progressbar zu setzen.

Sinniger ist da eine Restzeitanzeige, welche dann aber auch erst nach vielleicht 10 Sekunden eingeblendet wird,
wenn noch eine längere Wartezeit ansteht.

Ansonsten finde ich das nur nervig, sorry...
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ProgressBarGadget mit Text (Windows, für Anfänger & Prof

Beitrag von NicTheQuick »

Es ist ja niemand hier gezwungen sowas zu benutzen. Außerdem kann man den Code als Vorlage nutzen und statt der Prozentzahl auch andere Dinge rein schreiben.
walbus
Beiträge: 137
Registriert: 03.03.2013 20:50

Re: ProgressBarGadget mit Text (Windows, für Anfänger & Prof

Beitrag von walbus »

Das ist korrekt,
war ja auch nur sachlich meine bescheidene Meinung.
Die Restzeitanzeige ist aber auch nicht ganz so simpel.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ProgressBarGadget mit Text (Windows, für Anfänger & Prof

Beitrag von ts-soft »

Tommy hat geschrieben:
purebasic pb procedure prozedur funktion function array dim goto engine irrlicht ogre offtopic anfänger api windows linux macos variable konstante syntax schleife loop openwindow module basic quickbasic freebasic ButtonGadget ButtonImageGadget CalendarGadget CanvasGadget CheckBoxGadget ComboBoxGadget ContainerGadget DateGadget EditorGadget ... ...
Was soll denn nun der ganze unsinnige Text mit Size 1?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: ProgressBarGadget mit Text (Windows, für Anfänger & Prof

Beitrag von Bisonte »

Was soll denn nun der ganze unsinnige Text mit Size 1?
Ach du heiliger Bimbam...
Da ist einer aber ganz versessen darauf, bei wirklich jeder nur erdenklichen Suchanfrage mit aufgelistet zu werden....
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Gesperrt