![]() |
Zeichnen auf NonClientArea mit W7 Theme?
Tag allerseits,
Wollt mich mal mit dem zeichnen auf dem NonClientArea bei Forms beschäftigen. Dabei ist mir aufgefallen, dass keines der Beispiele, die ich gefunden habe funktioniert, wenn ein Theme in windows7 eingestellt wurde. Wenn ich auf Classic-Theme gehe klappt es. Muss ich dann für diese eine Form das Themeing abschalten und alles selber machen?(Wohle eher nicht) Wie mach DevExpress dass den dann?+ Als referenz Beispiel: ![]() |
AW: Zeichnen auf NonClientArea mit W7 Theme?
Meine ganzen Nonvcl Anwendungen zeichnen auf den NonClientArea Bereich.
Dabei spielt es überhaupt keine rolle ob eine Theme eingestellt ist oder nicht. Zitat:
gruss |
AW: Zeichnen auf NonClientArea mit W7 Theme?
@EWeiss: Ok das heißt: Theme für die Form abschalten ist damit inbegriffen?(bleiben mit dan die themes für die komponennten auf den Forms, wie Buttons?)
EDIT: yo, SetWindowTheme setzt das nur für die jeweilige control. Schöner wäre es natürlich, wen man direkt in Windows theme-bausteine(zumindest für die laufende applikation) registrieren könnte :) |
AW: Zeichnen auf NonClientArea mit W7 Theme?
Vielleicht ist
![]() |
AW: Zeichnen auf NonClientArea mit W7 Theme?
Liste der Anhänge anzeigen (Anzahl: 2)
SO, ich bin jetzt soweit, das ich den Frame zeichnen kann. Es ist mir außerdem möglich die Buttons Min/Max/Close frei zu plazieren, da ich sämtliche NC events dafür überschrieben habe.
Mit Platzhalter grafiken sieht es so aus: Anhang 39126 Leider habe ich ein Problem. In dem Moment, wo die Maus das erste mal mit irgendeinem teil des NC bereiches in Kontakt kommt(aber nur beim ersten mal, nach dem der active state gewechselt hat), werden die alten systembuttons draufgezeichnet -.- Anhang 39127 Ich weiß noch nicht woran das liegt und wie ich das unterbinden kann. Dies wurde unter anderem vorher auch von stellen wie NCHittest NCLbuttonDown/Up ausgelößt. Diese habe ich aber bereits gekapert um meine Buttons zu behandeln, weswegen dort das problem nicht mehr auftrit. Meine Frage also: WARUM o.o? |
AW: Zeichnen auf NonClientArea mit W7 Theme?
Ich glaube, das ist nicht der richtige Weg. Probier es mal so:
![]() |
AW: Zeichnen auf NonClientArea mit W7 Theme?
Was heißt nicht der richtige Weg? Ich möchte ja alles selber zeichnen. Und in deinem Beispiel wird eigentlich in C# nur das implementiert, was wir in Delphi GlassFrame nennen?
|
AW: Zeichnen auf NonClientArea mit W7 Theme?
Welchen WindowsStyle verwendest du denn?
gruss |
AW: Zeichnen auf NonClientArea mit W7 Theme?
Zum zeichnen stelle ich momentan den STyle der Form ab(Betrifft aber nur die form). Darauf zeichne ich dan. Wiegesagt, das letzte was mich nervt ist, das aus irgendeinem grund irgendwo diese Systembuttons erneut gezeichnet werden. Ich muss rauskriegen wo, um das zu korrigieren :(
|
AW: Zeichnen auf NonClientArea mit W7 Theme?
Deshalb meine Frage welchen Windowstyle du verwendest.
Du mußt diesen ermitteln und gegebenfalls auf den für dich in frage kommenden ändern. So wie es zur zeit bei dir aussieht verwendest du WS_OVERLAPPEDWINDOW. Und was sagt dir das? oops: So denke ich WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED or WS_CAPTION or WS_SYSMENU or WS_THICKFRAME or WS_MINIMIZEBOX or WS_MAXIMIZEBOX); Entweder verwende einen der die Boxen gar nicht erst anzeigt Oder schalte sie einfach aus gruss |
AW: Zeichnen auf NonClientArea mit W7 Theme?
AH, ok yetzt versteh ich worauf du hinaus wolltest!^^
Ja Das SysMenu abgeschaltet und schon habe ich freie Bahn...es kann manchmal so einfach sein :D |
AW: Zeichnen auf NonClientArea mit W7 Theme?
Zitat:
Zitat:
uses uxthemes function UseThemes: Boolean; davor aber unbedingt die Library initialisieren InitThemeLibrary gruss |
AW: Zeichnen auf NonClientArea mit W7 Theme?
Zitat:
Im anderen Fall würde ich ein Layered Window nehmen. |
AW: Zeichnen auf NonClientArea mit W7 Theme?
Zitat:
Nehmen wir mal als Beispiel den Formrand. Dafür kann ich die Grafik bekommen. Würde statdessen aber leiber was eigenes registrieren, dass dan gezeichnet wird. Jemand nen beispiel? EDIT: ah moment. GetThemeBitmap kann mir das aktuelle handle geben. Das heißt ich kann dessen Inhalt verändern und bearbeite somit den theme richtig? MFG Memnarch |
AW: Zeichnen auf NonClientArea mit W7 Theme?
Zitat:
Ich dachte es ging dir mehr darum ob du zulassen/verhindern willst ob die Theme deinen Fensterstiel verändert. Zitat:
Ich sagte ja schon bei deinem Vorhaben mußt du alles selber machen. gruss |
AW: Zeichnen auf NonClientArea mit W7 Theme?
Liste der Anhänge anzeigen (Anzahl: 3)
Ich habe es jetzt so, dass zuerst das Systemmenu abgestellt wird
Anhang 39141 Das theming ebenfalls Anhang 39142 und zeichne dan meinen Kram: Anhang 39140 Mh, ich kann sogar die ClientArea größe genau bestimmen. Oh das erlaubt so schöne sachen(wie schließen buttons etc auf der seite oder so :D) Zittert an der rechten/unteren ecke allerdings noch etwas (Je nach skalierrichtung). Da muss ich nochmal gucken... Die Grafiken sind aus dem "Orange Graphit" VCL style von ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:20 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 by Thomas Breitkreuz