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 Window Theme selber malen (https://www.delphipraxis.net/157838-window-theme-selber-malen.html)

Sherlock 26. Jan 2011 15:43

Window Theme selber malen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Da ich ja die hier (http://www.delphipraxis.net/157825-f...verwendet.html) geschilderten Probleme versuche zu umschiffen, möchte ich ein TForm selber malen. Leider bekomme ich nur einen rosa Rand (Bild) oO

Ich versuche im OnPaint folgendes:
Delphi-Quellcode:
     
// Caption
      R := Rect(0, 0, Width, 30); // Eigentlich geraten, aber GEtThemeMetric gibt einen Phantasiewert zurück -.-
      canvHandle := TeschtForm.Canvas.Handle;
      Details := ThemeServices.GetElementDetails(twDialog);
//      ThemeServices.DrawElement(canvHandle, Details, R);
      DrawThemeParentBackground(Handle, canvHandle, @R);
      DrawThemeBackground(aThemeHandle, canvHandle, WP_DIALOG, 0, R, @R);
  // LeftBorder
      R := Rect(0, 0, 2, Height);
      Details := ThemeServices.GetElementDetails(twDialog);
//      ThemeServices.DrawElement(canvHandle, Details, R);
      DrawThemeParentBackground(Handle, canvHandle, @R);
      DrawThemeBackground(aThemeHandle, canvHandle, WP_DIALOG, 0, R, @R);
  // RightBorder
      R := Rect(Width - 2, 0, Width, Height);
      Details := ThemeServices.GetElementDetails(twDialog);
//      ThemeServices.DrawElement(canvHandle, Details, R);
      DrawThemeParentBackground(Handle, canvHandle, @R);
      DrawThemeBackground(aThemeHandle, canvHandle, WP_DIALOG, 0, R, @R);
  // BottomBorder
      R := Rect(0, Height - 2, Width, Height);
      Details := ThemeServices.GetElementDetails(twDialog);
//      ThemeServices.DrawElement(canvHandle, Details, R);
      DrawThemeParentBackground(Handle, canvHandle, @R);
      DrawThemeBackground(aThemeHandle, canvHandle, WP_DIALOG, 0, R, @R);
Hat jemand sowas schonmal erfolgreich gemacht (und evtl noch den Code dazu)?

Achja: natürlich alles in Win7...

Sherlock

pustekuchen 26. Jan 2011 15:48

AW: Window Theme selber malen
 
Hab ich was an den Augen oder ist dort kein Rosa Rand auf dem Screenshot?

Memnarch 26. Jan 2011 15:50

AW: Window Theme selber malen
 
Doch es handelt sich dabei um einen Rosafarbton(Weil bestehend aus rot+aufhellung durch weiß)


Oder meintest du wirklich dass du da nichts siehst?

MFG
Memnarch

Sherlock 26. Jan 2011 15:55

AW: Window Theme selber malen
 
Zitat:

Zitat von pustekuchen (Beitrag 1077470)
Hab ich was an den Augen oder ist dort kein Rosa Rand auf dem Screenshot?

Der Rand ist nur zwei Pixel dünnn, aber er ist wirklich rosa :wall:

Sherlock

Memnarch 26. Jan 2011 16:00

AW: Window Theme selber malen
 
@Sherlock: nich nur der rand, sondern auch der Header :P(dne ich in meiner beobachtung eigentlich zum rand gezählt hatte)

Sherlock 26. Jan 2011 16:03

AW: Window Theme selber malen
 
Klar, ich meine alles aussenrum, der dicke obere Teil dürfte ja für jeden zu erkennen sein. Übrigens zeigt mir der ThemeExplorer (DelphiGems) twDialog auch als rosa an...dürfte so manches erklären :D Aber was soll man denn da sonst nehmen, für einen Dialog?

Sherlock

Memnarch 26. Jan 2011 16:05

AW: Window Theme selber malen
 
Nochmal kurz auf die sprünge helfen bitte:
Ist das problem die Farbe? Oder wo die Farbe angebracht wird?

MFG
Memnarch

EWeiss 27. Jan 2011 05:59

AW: Window Theme selber malen
 
Keine Ahnung was du machst zumindest kann ich aus deinem Schnipsel nichts entnehmen.
Bei meinem Clock Projekt hatte ich das selbe problem unter XP einwandfrei unter Win7 einen Rosa Hintergrund
Habe das bei Win7 so geregelt das ich den Hintergrund auf Schwarz eingestellt habe.
Delphi-Quellcode:
GdipCreateHBITMAPFromBitmap(pointer(ImgBack), hbmReturn, $000000);
In XP ist es $FF00FF..

Vieleicht hilft es dir ja.

gruss


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