Entwickler-Ecke
Multimedia / Grafik - form transparent bei win 98 ?
Takeshi - Sa 10.05.03 01:16
Titel: form transparent bei win 98 ?
Moin.
Hauptsächlich möchte ich fragen, wie man Teile einer Form transparent kriegt. Also mit TransparentColor geht das ja, aber scheinbar nur unter win2k/xp aber nicht mit win 98. Also - wie machen das die Programme, bei win 98 ? Winamp als Beispiel.
Ferner würde ich dann gerne Komponenten selbst erstellen, die halt ein neues Aussehen haben. Am besten auch eine Form, die zB ein Skin hat, sodass ich diese wie die standard-form und buttons direkt benutzen kann. Wo finde ich dazu Informationen ?
greez, Takeshi
tommie-lie - Sa 10.05.03 11:30
Transparenz geht meines Wissens unter Win9x nur 1-bittig. Du kannst also keine Halbtransparenz machen. Wenn du aber nur zum Beispiel die Ecken der Form rund haben möchtest müsstest du Regions erstellen. Diese können beliebige Formen haben (rund, eckig und freiförmig) und diese Region dann deiner Form per SetWindowRgn zuweisen. Danach ist der Zeichen- und Reaktionsbereich deiner Form nur noch auf die Region beschränkt und somit wäre die Form imit den Umrissen der Region gezeichnet. Allerdings ist das zusammensetzen einer Region ein wenig arbeitsträchtig, wenn es keine runde oder eckige sein soll (die gehen am einfachsten ;-) ). Und das ganze funktioniert auf API-Ebene, ein wenig über Handles und so müsstest du al´so auch noch wissen.
Alternativ gibt es Komponenten (kenn' grad' keine, such mal bei Torry oder DSP), die Skins schon fertig implementiert haben. Sie bestehen meist aus einem Grundobjekt, das auf der Form platziert wird, das weitere Objekte wie Buttons und Slider beinhalten kann. Diese Komponenten setzen die Regions i.d.R. entsprechend der ihr zugewiesenen Bilder automatisch, also müsstest du dich nur noch um die Grafiken selbst kümmern.
Takeshi - Sa 10.05.03 15:37
danke schonmal.
ich kann "SetWindowRgn" leider nirgends finden
tommie-lie - Sa 10.05.03 18:54
Gehört ja auch nicht zu Delphi, sondern zu Windows ;-)
Hast du das SDK? Dann findest du es dort.
Wenn du's nicht hast, findest du es
hier [
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/] (allerdings nur für Breitbandbesitzer und, MS-typisch, für User des IE)
Alternativ halt im MSDN...
Takeshi - Sa 10.05.03 21:24
<IExplorer auspack>
was muss ich denn alles davon installieren?
Kannst Du mir nicht bitte die Syntax für diesen Befehl posten ?
greez, Takeshi
tommie-lie - Sa 10.05.03 23:20
Keine Ahnung, was du davon installieren musst. Ich selbst habe das SDK von Delphi, woher dort genau weiß ich nciht mehr. Runtergeladen habe ich es nicht, weil ich kein Breitband habe, und den Link habe ich aus der hiesigen Linksammlung.
Die Syntax des Befehles selbst wird dir wenig bringen, denn dann wird die nächste Frage sein, was hRgn ist und wie man das Ding erstellt usw.
Aber trotzdem, hier die Funktion, wie sie im SDK steht:
| MS Win32 PSDK hat folgendes geschrieben: |
Quelltext 1: 2: 3: 4: 5: 6:
| int SetWindowRgn(
HWND hWnd, // handle to window whose window region is to be set HRGN hRgn, // handle to region BOOL bRedraw // window redraw flag ); |
Parameters
hWnd
Handle to the window whose window region is to be set.
hRgn
Handle to a region. The function sets the window region of the window to this region.
If hRgn is NULL, the function sets the window region to NULL.
bRedraw
Boolean value that specifies whether the operating system redraws the window after setting the window region. If bRedraw is TRUE, the operating system does so; otherwise, it does not.
Typically, you set bRedraw to TRUE if the window is visible.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.
Remarks
If the bRedraw parameter is TRUE, the system sends the WM_WINDOWPOSCHANGING and WM_WINDOWPOSCHANGED messages to the window.
The coordinates of a window's window region are relative to the upper-left corner of the window, not the client area of the window.
After a successful call to SetWindowRgn, the operating system owns the region specified by the region handle hRgn. The operating system does not make a copy of the region. Thus, you should not make any further function calls with this region handle. In particular, do not close this region handle.
To obtain the window region of a window, call the GetWindowRgn function. |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!