Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi VCL zu Non-VCL (https://www.delphipraxis.net/193374-vcl-zu-non-vcl.html)

mensch72 25. Jul 2017 09:58

AW: VCL zu Non-VCL
 
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"

himitsu 25. Jul 2017 10:11

AW: VCL zu Non-VCL
 
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.

EWeiss 25. Jul 2017 13:20

AW: VCL zu Non-VCL
 
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

Fritzew 25. Jul 2017 13:41

AW: VCL zu Non-VCL
 
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

EWeiss 25. Jul 2017 13:54

AW: VCL zu Non-VCL
 
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

bra 25. Jul 2017 14:08

AW: VCL zu Non-VCL
 
In der Dokumentation zur Funktion steht, man sollte es nicht tun. Dann ist doch schnurz, was in in irgendwelchen Beispielen steht! :roll:

EWeiss 25. Jul 2017 14:13

AW: VCL zu Non-VCL
 
Zitat:

Zitat von bra (Beitrag 1377429)
In der Dokumentation zur Funktion steht, man sollte es nicht tun. Dann ist doch schnurz, was in in irgendwelchen Beispielen steht! :roll:

Die Praxis sagt was anderes.
Sorry deine Aussage ist nicht qualifiziert genug.

Zitat:

BOOL DeleteObject(
_In_ HGDIOBJ hObject
);
Return value
If the function succeeds, the return value is nonzero.
If the specified handle is not valid or is currently selected into a DC, the return value is zero.
In beiden fällen ist die Rückgabe von DeleteObject (TRUE)
Delphi-Quellcode:
    SelectObject(FWindowDC, OldBrush);
    if DeleteObject(Brush) then
      SelectObject(FOldWindowDC, FWindowBitmap);
Delphi-Quellcode:
    //SelectObject(FWindowDC, OldBrush);
    if DeleteObject(Brush) then
      SelectObject(FOldWindowDC, FWindowBitmap);
Jeder kann sich nun aussuchen was er denn nun gerne hätte.

Qualifikation!
Für mich zählt das Ergebnis und das ist in beiden fällen True (Das Object wurde freigegeben und ich hab kein Speicherleck).
Widerlege mir das dann können wir darüber weiter diskutieren.

gruss

bra 25. Jul 2017 14:32

AW: VCL zu Non-VCL
 
https://stackoverflow.com/questions/...ject-on-bitmap

EWeiss 25. Jul 2017 14:33

AW: VCL zu Non-VCL
 
Zitat:

Zitat von bra (Beitrag 1377433)

Vergiss es. (Spam)
Hat nichts mit einem Bitmap zu tun. (Hintergrundfarbe Window\Form)

gruss

freimatz 25. Jul 2017 15:56

AW: VCL zu Non-VCL
 
Was ist NON-VCL?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz