AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VCL zu Non-VCL

Ein Thema von EWeiss · begonnen am 22. Jul 2017 · letzter Beitrag vom 25. Jul 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: VCL zu Non-VCL

  Alt 22. Jul 2017, 20:10
Zitat:
passt irgendwie auch nicht so ganz zusammen
Dann erkläre mir mal warum nicht?

Ich habe versucht eine Lösung zu bekommen wie ich
FForm.Brush.Handle

nach NON-VCL umsetzen kann die Lösung habe ich dann selbst erarbeitet.
Das zu punkt NON-VCL

Zitat:
Du weist aber schon das es hier um VCL geht?
Bezog sich auf die Frage VCL!

Auf was sich dann meine Frage bezog war welche Farbe dem FForm.Brush zugewiesen wird wenn man es nicht explicit selbst tut.
Denn irgendwo her muss das Handle ja zugewiesen werden mit der dafür erstellten Farbe vom Brush.

Das zu Punkt VCL

Nun was passt hier nicht zusammen ?
Ich dachte eigentlich das mir jemand der ausschließlich mit der VCL arbeitet mir das sagen könnte.
Dem scheint wohl nicht so.

gruss

Geändert von EWeiss (22. Jul 2017 um 20:13 Uhr)
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#2

AW: VCL zu Non-VCL

  Alt 24. Jul 2017, 11:03
Mindesten fehlt "OldBrush" zum retten des vorherigen Brushs, denn man löscht kein noch selktiertes Handle...
(ob man den Brush selektieren muss, wenn er bei FillRect mit übergeben wird, das weiß ich aus dem Kopf nicht mehr, aber schaden kann es nicht)

Delphi-Quellcode:
var
   Brush: HBrush;
   OldBrush: HBrush;
begin
   Brush := CreateSolidBrush(myColor);
   OldBrush:=SelectObject(FWindowDC, Brush);
   FillRect(FWindowDC, Rect(0, 0, ClientWidth, ClientHeight), Brush);
   SelectObject(FWindowDC, OldBrush);
   DeleteObject(Brush);
end;
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: VCL zu Non-VCL

  Alt 24. Jul 2017, 13:15
Zitat:
ob man den Brush selektieren muss
Ja muss man Danke

Edit:
Aber OldBrush benötigt man nicht.

Hier ein Beispiel:
http://www.functionx.com/win32/Lesson17.htm

gruss

Geändert von EWeiss (24. Jul 2017 um 13:51 Uhr)
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#4

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 09:58
https://msdn.microsoft.com/de-de/lib...(v=vs.85).aspx

Man darf laut MS keine selektierten GDI-Objekte löschen, was aber in vielen Beispielen und Sourcen im INet nicht beachtet wird!?
Unter Win31 endete es schenll ganz böse, wenn das nicht beachtet hat, heute is die WinApi etwas robuster, aber es macht auf Dauer auch Probleme.

=> als benötigt man doch entweder den "OldBrush", oder man selektiert vor dem löschen etwas internes per "GetStockObject"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#5

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 10:11
Und OldBrush hat einen Vorteil.

Wenn außenrum eine große Zeichenroutine ist und mitten drin dein Code, dann kann es sein, dass danach andere Dinge mit dem falschen Brush weitergezeichnet werden, wenn du es nicht zurücksetzt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 13:20
Zitat:
Man darf laut MS keine selektierten GDI-Objekte löschen, was aber in vielen Beispielen und Sourcen im INet nicht beachtet wird!?
Nein?
Und warum tut es MS nicht selbst.
Sehe nirgends etwas von OldPen, OldBrush usw..
https://msdn.microsoft.com/de-de/lib...(v=vs.85).aspx

Ein Widerspruch in sich oder?

Zitat:
dass danach andere Dinge mit dem falschen Brush weitergezeichnet werden
Nö es ist immer die Value maßgeblich die gerade beim aktuellen zeichnen selektiert ist.

gruss

Geändert von EWeiss (25. Jul 2017 um 13:23 Uhr)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 13:41
Meiner Meinung nach hat Himitsu hier recht

Das Beispiel in MSDN ist total Schrott

Schau Dir mal das an:


https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Und wenn Du dabei bist auch noch:

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Die GDI ist zwar robuster geworden aber es schadet bestimmt nicht wenn man sich an die Regeln hält
Fritz Westermann
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz