Seite 1 von 2
SetWindowTitle() verändert nicht die Taskleiste
Verfasst: 22.07.2005 17:26
von Batze
Wenn ich den Titel eines Fensters mit SetWindowTitle() ändere wir das bei mir in der Taskleiste der Titel nicht verändert. Ich brauch das aber für eine Vortschrittsanzeige.
Code: Alles auswählen
OpenWindow(0, 10, 10, 200, 100, #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "0% Fertig")
Repeat
Delay(60)
Prozent.f + 0.1
SetWindowTitle(0, Str(Prozent) + "% Fertig" )
Repeat
Event = WindowEvent()
If Event = #PB_Event_CloseWindow : Break 2 : EndIf
Until Event = 0
Until Prozent => 100
Das hier ist natürlich nur ein Beispielcode.

Verfasst: 22.07.2005 17:28
von DarkDragon
Das ist ein Bug von Windows so wies aussieht, denn SetWindowText_() hilft auch nicht.
Verfasst: 22.07.2005 17:31
von Batze
Aber es gibt doch Programme die das schaffen, z.B: Nero.
Verfasst: 22.07.2005 18:15
von Ynnus
DarkDragon hat geschrieben:Das ist ein Bug von Windows so wies aussieht, denn SetWindowText_() hilft auch nicht.
Nein, sicher kein Windows-Bug sondern eine Eigenschaft von PureBasic-Fenstern (Oder ein PB-Bug, nenne es wie du willst). Denn wenn ich in meinen Programmen (die alle zu 100% auf der WinAPI basieren) den Fenstertext ändere, (übrigens mit SetWindowText(hwnd, text)), dann ändert sich auch die Taskleiste unten mit. Also dann macht PureBasic die Fensterklassenregistration etwas anders als normal per WinAPI üblich wäre. Ein WinAPI Fenster jedenfalls passt den Taskleistentext ohne Probleme an den Fenstertext an.
Verfasst: 22.07.2005 18:22
von Batze
Das heißt, ich kanns mit PB nicht lösen, wenn ich nicht das Fenster mit WinApi erstelle und damit dann auch den Titel ändere?
Hast du mal einen Beispielcode?
Verfasst: 22.07.2005 23:38
von Andre
Nun, ich habe Problemstellung mal Fred gemailt. Mal sehen, was er dazu meint...
Verfasst: 23.07.2005 00:11
von Ynnus
Batze hat geschrieben:Das heißt, ich kanns mit PB nicht lösen, wenn ich nicht das Fenster mit WinApi erstelle und damit dann auch den Titel ändere?
Hast du mal einen Beispielcode?
Mein Programm ist mehrere tausend Zeilen lang und meine Fenster basieren auf selbsterstellten Klassen in C++, damit wirst du wohl nicht viel anfangen können. Zumindest so aus dem Zusammenhang gerissen. Jedenfalls werden meine Fenster mittels CreateWindow erstellt, haben alle eine eigene registrierte Fensterklasse und auch eine eigene Windows-Prozedur (Callback).
Verfasst: 23.07.2005 00:22
von Green Snake
ömm, aber so ne frage:
wiso machst du das "schwierig", wenns auch "einfach" geht?
ich würde jetzt keine fenster mittels der api create window öffnen, aber warum machst du das?
hat das einen vorteil?
Verfasst: 23.07.2005 09:05
von DarkDragon
Green Snake hat geschrieben:ömm, aber so ne frage:
wiso machst du das "schwierig", wenns auch "einfach" geht?
ich würde jetzt keine fenster mittels der api create window öffnen, aber warum machst du das?
hat das einen vorteil?
Bei CreateWindow/CreateWindowEx muss die Fensterklasse zunächst Registriert werden mittels RegisterClass. Dann wird der CreateWindow/CreateWindowEx Befehl aufgerufen. Messages werden üblicherweise über ein WindowCallback abgefangen.
[EDIT]
Üblicherweise baut man sich im vorraus deswegen eine Klasse(sofern es die Sprache erlaubt), mit der man ganz einfach Fenster so wie in PureBasic erstellen kann. Dann braucht man nurnoch
Code: Alles auswählen
CWindow Window;
HWND hWnd;
hWnd = Window->Create(0, 0, 640, 480, "Titel");
...
Verfasst: 23.07.2005 10:34
von Leo
Wenn schon
weil Window ist ja kein Pointer auf ein Objekt, oder lieg ich da jetzt falsch?