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
mensch72

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

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
 
#2

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
 
#3

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
 
#4

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
 
#5

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
 
#6

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
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 13:54
Zitat:
Das Beispiel in MSDN ist total Schrott
Nun da fragt man sich welches Beispiel denn nun Schrott ist.
Meine verlinkten oder deine verlinkten.

Es ist mir jetzt zu mühselig das nachzuvollziehen was, wo , wer denn nun recht hat.
Ich sehe nur das ein und das gleiche Unternehmen unterschiedliche Interpretationen wieder gibt.

Natürlich, man kann nun hingehen und das für sich passende heraussuchen um gegen zu argumentieren.
Aber das erspare ich mir einfach.

Zitat:
Die GDI ist zwar robuster geworden aber es schadet bestimmt nicht wenn man sich an die Regeln hält
Wer sagt dir nun welche die Regel ist?
Wenn wie in meinen Links ersichtlich die MSDN es selbst nicht mal tut.

gruss
  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:33 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