Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi DC leeren (https://www.delphipraxis.net/17812-dc-leeren.html)

Dax 10. Mär 2004 06:23


DC leeren
 
Ich habe mir von mein Fenster den DC geholt und mit DrawText etwas draufgezeichnet.
Nun, den Text will ich wieder loswerden!
Nur: wie mach ich das?

Phoenix 10. Mär 2004 07:21

Re: DC leeren
 
Hrm.

Ich würde vorschlagen mit Invalidate und Repaint. Kann auch sein das ein Repaint das invalidate automatisch macht, hab grad keine OH vorliegen.

Dax 11. Mär 2004 06:19

Re: DC leeren
 
Ich will ja nix sagen, aber das geht nicht!

teebee 11. Mär 2004 07:46

Re: DC leeren
 
Wenn Du nur in den Client-Bereich des Fensters malst, d.h den DC mit GetDC geholt hast, dann funktioniert Invalidate.
Wenn Du den DC mit GetWindowDC holst, also auch auf NonClient-Bereiche malen kannst, dann funktioniert Invalidate nicht, dann musst Du Dein Fenster zwingen, seinen NC-Bereich neu zu malen:
Delphi-Quellcode:
SetWindowPos(Handle,0,0,0,0,0,SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER);
Gruß, teebee

Dax 12. Mär 2004 06:23

Re: DC leeren
 
Sorry Leute, ich hätte sagen sollen, dass der Fenster-DC (und das Fenster selbst) TRANSPARENT sind.

Hab' aber doch 'ne Lösung geunden:
Delphi-Quellcode:
var wnd: RECT;

SetWindowRgn(DC, CreateRectRgn(0, 0, 0, 0));
GetClientrect(wnd);
SetWindowRgn(DC, CreateRectRgnIndirect(wnd));
Das geht! :hello:

BtW: Die umständlichkeit der Window-API beim Zeichnen ist zum :kotz:

Luckie 12. Mär 2004 06:33

Re: DC leeren
 
Aber du weißt, was du machst. Wöhrend hingegen bei der VC weißt du nicht so genau, was die intern so macht. ;)

Dax 12. Mär 2004 06:53

Re: DC leeren
 
Das ist das schöne an der API: komplette Kontrolle. Allerdings muss sie durch umständlichkeit und komplexität erkauft werden. :(

Luckie 12. Mär 2004 06:54

Re: DC leeren
 
Nicht unbedingt. Man muss nur einmal kapiert haben wie der Hase läuft. ;)

Dax 12. Mär 2004 06:55

Re: DC leeren
 
Aber bis man DAS kapiert hat....


dauert's 'ne Weile.

Robert_G 12. Mär 2004 07:14

Re: DC leeren
 
OT:
Und dann ist für die Katz'. Weil man unter .Net damit nix anfangen kann. :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr.
Seite 1 von 2  1 2      

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