Seite 1 von 2

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

Verfasst: 25.01.2015 20:55
von Tommy
Code gelöscht weil der nich mir gehörte.

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

Verfasst: 25.01.2015 21:08
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

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

Verfasst: 25.01.2015 21:14
von JMaker
danke Tommy :allright:
Und die Textfarbe ändert sich auch automatisch, dachte es wäre eintönig, aber nein, find ich super :allright:

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

Verfasst: 25.01.2015 21:40
von Tommy
Danke, das hört man gern :)

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

Verfasst: 26.01.2015 11:22
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


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

Verfasst: 26.01.2015 18:48
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...

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

Verfasst: 26.01.2015 18:51
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.

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

Verfasst: 26.01.2015 19:06
von walbus
Das ist korrekt,
war ja auch nur sachlich meine bescheidene Meinung.
Die Restzeitanzeige ist aber auch nicht ganz so simpel.

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

Verfasst: 26.01.2015 19:13
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?

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

Verfasst: 26.01.2015 19:23
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....