Autor Beitrag
julbo
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 12.03.03 05:23 
Kurze Frage, mit hoffentlich ebenso kurzer Antwort ;):

Warum kann ich in einem Timer (in der Timerprozedur) den API - Befehl BitBlt nicht verwenden. Soll heißen, dass dieser Befehl:
ausblenden Quelltext
1:
BitBlt(frmMain.ImgMain.Canvas.Handle,0,0,300,30,frmMain.ImgLogo.Canvas.Handle,0,0,SRCCOPY);					

einwandfrei funktioniert, solange ich ihn außerhalb von einem Timer verwende, zum Beispiel bei einem Button oder beim Starten vom Programm. Wenn ich nun diesen Befehl ständig durch einen Timer aufrufe passiert aber nichts. Die Timer-Prozedur funktioniert aber einwandfrei, da andere (nicht BitBlt-) Funktionen gehen.

Mh...

Gibt es noch eine andere Möglichkeit, eine Funktion ständig aufzurufen. Bitte kein Sleep, ist mir zu Systemlastig.

Danke Björn.

Moderiert von user profile iconTino: Code-Tags hinzugefügt.
Luncustaf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Mi 12.03.03 07:56 
setz mal nen Application.ProcessMessages;

unter den BitBlt


gr€€tz
julbo Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 12.03.03 17:01 
Mh...

Hab ich probiert...
Leider ohne Erfolg. Ich hab gehört, dass es noch ne (API-) Timer-Funktion gibt. Könnte die mir weiterhelfen?
julbo Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Do 13.03.03 01:50 
Titel: Probiert...
Ich habe jetzt so lange probiert und programmiert...

Weiß jetzt genau, woran es liegt, kann es jedoch nicht beheben. Es liegt jedoch nicht am Timer...

Wenn ich zum Beispiel eine Image-Komponente habe...
Und in dieser Manipuliere...
Zum Beispiel mit:
ausblenden Quelltext
1:
frmMain.Image1.Canvas.LineTo(0,0);					


Und danach versuche in diese Image-Komponente Daten hineinzukopieren:
ausblenden Quelltext
1:
BitBlt(frmMain.Image1.Canvas.Handle, 0, 0, 100,100, frmMain.ImgFirstPic.Canvas.Handle, 0, 0, SRCCOPY);					


Dann funktioniert das nicht. Erst, wenn ich zum Beispiel wieder ein Bild in diese Komponente lade:
ausblenden Quelltext
1:
frmMain.Image1.Picture.LoadFromFile('weiss.bmp');					


Erst dann funktioniert der Befehl BitBlt wieder...

Woran liegt das??? Bin ich zu blöd?

Danke für alle Antworten
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 13.03.03 01:53 
Ruf mal nach BitBlt RaiseLastOSError(); auf.
julbo Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Do 13.03.03 02:58 
Das gibt mir folgende Meldung zurück:

Project raised exception class EOSError with message 'System Error. Code: 6. Das Handle ist ungültig'. Process stopped. Use Step or Run to continue.

Mh??? Warum ist nun das Handle ungültig??? Ich hab es doch nicht gelöscht....
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 13.03.03 03:38 
Na bitte. Dann wird irgendwas dazwischen für eun ungültiges Handle sorgen oder es ist von vorneherein falsch. Poste mal den ganzen Code vom Timer-Ereigniss.