![]() |
Probleme mit CreateCompatibleDC und DeleteDC
Hallo,
meine Frage bezieht sich auf Luckies Tutorial ![]() Zum Überprüfen nutze ich immer MemProof (sollte bekannt sein). Jedenfalls kriege ich nach dem Beenden meines Programmes in der MemProof-Sandbox 25 mal den Fehler: 'DeleteDC(...): Falscher Parameter'. Mal kurz zusammengefasst... Mein WM_CREATE:
Delphi-Quellcode:
Mein WM_DESTROY:
WM_CREATE:
begin [...] hDevCon := GetDC(hWnd); hDevConMem := CreateCompatibleDC(hDevCon); hBmp := CreateCompatibleBitmap(hDevCon, WND_WIDTH, WND_HEIGHT); hBmpOld := SelectObject(hDevConMem, hBmp); DeleteObject(hBmp); TextOut(hDevConMem, 10, 10, 'Hello World', 11); // Wäre wohl "richtig": // SelectObject(hDevConMem, hBmpOld); // DeleteDC(hDevConMem); ReleaseDC(hWnd, hDevCon); Result := 0; end;
Delphi-Quellcode:
Problem ist jetzt, dass ich hDevConMem schon im WM_CREATE wieder löschen müsste (dann würde ich auch keine Fehler bekommen). Habe ich aber nichts von, da ich das DC im WM_PAINT nicht mehr auf das Fenster-DC kopieren könnte, was konkret heißt, mein "Hello World" wird nicht dargestellt.
WM_DESTROY:
begin SelectObject(hDevConMem, hBmpOld); DeleteDC(hDevConMem); [...] end; Nun wollte ich fragen, ob es da eine andere Lösung gibt? D.h.: wo müsste ich mein "CreateCompatibleDC" und "DeleteDC" platzieren, dass ich a.) im WM_PAINT darauf zugreifen kann b.) es wieder freigeben kann, ohne dass ich Fehler von der gdi32.dll gekommen. MfG Philipp |
Re: Probleme mit CreateCompatibleDC und DeleteDC
Warum machst du das eigenbtlich in WM_CREATE? Mach es doch gleich in WM_PAINT.
|
Re: Probleme mit CreateCompatibleDC und DeleteDC
Zitat:
E: Haut soweit hin. Hatte mich nur gewundert, ob es wirklich nötig ist das Ganze im WM_PAINT immer wieder neu zu erstellen/löschen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 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