Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Canvas in nonVCL? (https://www.delphipraxis.net/63306-canvas-nonvcl.html)

NeoXan 16. Feb 2006 16:06


Canvas in nonVCL?
 
Hallo,

also ich habe mir mit dem VC++ Ressource Editor ein DialogFeld gebastelt, testweise mit einem Picture(Type= Frame) enthalten.
Den Dialog rufe ich mit...
Delphi-Quellcode:
hdlg := DialogBoxParam(HInstance, MAKEINTRESOURCE(101), 0, @MainDlg, 0);
...auf.

Wie könnte ich nun Canvas benutzen bzw. auf die Canvas von einzelnen Controls zugreifen?
Ich hatte es mit
Delphi-Quellcode:
var DC: HDC;
    cTemp: TCanvas;
begin
  DC := GetDC(hdlg);
  cTemp := TCanvas.Create;
  cTemp.Handle := DC;
  cTemp.FillRect( cTemp.ClipRect );
  cTemp.Free;
  ReleaseDC( hdlg, DC);
probiert, aber das führte nur zu Grafikfehlern auf meinem Desktop.

vielen Dank im vorraus
Florian

3_of_8 16. Feb 2006 16:11

Re: Canvas in nonVCL?
 
Ist ein Canvas nicht teil der VCL? Also wäre doch Canvas und nonVCL ein Widerspruch in sich.

Ich könnte mich auch irren...

Luckie 16. Feb 2006 16:11

Re: Canvas in nonVCL?
 
Das kann nicht gut gehen. Du mischt nonVCL mit VCL Methoden. Wie man auf dem Canvas zeichnet, kannst du dir in meinen Tutorials angucken.

Flocke 16. Feb 2006 16:15

Re: Canvas in nonVCL?
 
Was hast du denn vor?

Wenn du mit GetDC einen Gerätekontext holst (das ist eine Art Windows-API-Canvas) und dort hinein zeichnest, dann sind die Änderungen bei der nächsten Aktualisierung der Fenster wieder weg. Außerdem solltest du dann direkt die GDI-Funktionen benutzen.

Wenn du die Hintergrundfarbe einzelner Controls ändern willst, dann solltest du lieber die Meldungen WM_CTLCOLORxxx (z.B. WM_CTLCOLORSTATIC) in deiner Dialogroutine abfangen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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