Freigeben über


UpdateLayeredWindow-Funktion (winuser.h)

Aktualisiert die Position, Größe, Form, Inhalte und Lichtdurchlässigkeit eines überlappenden Fensters.

Syntax

BOOL UpdateLayeredWindow(
  [in]           HWND          hWnd,
  [in, optional] HDC           hdcDst,
  [in, optional] POINT         *pptDst,
  [in, optional] SIZE          *psize,
  [in, optional] HDC           hdcSrc,
  [in, optional] POINT         *pptSrc,
  [in]           COLORREF      crKey,
  [in, optional] BLENDFUNCTION *pblend,
  [in]           DWORD         dwFlags
);

Parameter

[in] hWnd

Typ: HWND

Ein Handle für ein mehrstufiges Fenster. Ein mehrstufiges Fenster wird erstellt, indem beim Erstellen des Fensters mit der CreateWindowEx-Funktion WS_EX_LAYERED angegeben wird.

Windows 8: Der WS_EX_LAYERED-Stil wird für Fenster der obersten Ebene und untergeordnete Fenster unterstützt. Frühere Windows-Versionen unterstützen WS_EX_LAYERED nur für Fenster der obersten Ebene.

[in, optional] hdcDst

Typ: HDC

Ein Handle für einen DC für den Bildschirm. Dieses Handle wird abgerufen, indem null angegeben wird, wenn die GetDC-Funktion aufgerufen wird. Es wird für den Farbabgleich der Palette verwendet, wenn der Fensterinhalt aktualisiert wird. Wenn hdcDstNULL ist, wird die Standardpalette verwendet.

Wenn hdcSrcNULL ist, muss hdcDstNULL sein.

[in, optional] pptDst

Typ: POINT*

Ein Zeiger auf eine Struktur, die die neue Bildschirmposition des mehrstufigen Fensters angibt. Wenn sich die aktuelle Position nicht ändert, kann pptDstNULL sein.

[in, optional] psize

Typ: SIZE*

Ein Zeiger auf eine Struktur, die die neue Größe des mehrstufigen Fensters angibt. Wenn sich die Größe des Fensters nicht ändert, kann psizeNULL sein. Wenn hdcSrcNULL ist, muss psizeNULL sein.

[in, optional] hdcSrc

Typ: HDC

Ein Handle zu einem DC für die Oberfläche, die das mehrschichtige Fenster definiert. Dieses Handle kann durch Aufrufen der CreateCompatibleDC-Funktion abgerufen werden. Wenn sich die Form und der visuelle Kontext des Fensters nicht ändern, kann hdcSrcNULL sein.

[in, optional] pptSrc

Typ: POINT*

Ein Zeiger auf eine Struktur, die die Position der Ebene im Gerätekontext angibt. Wenn hdcSrcNULL ist, sollte pptSrcNULL sein.

[in] crKey

Typ: COLORREF

Eine -Struktur, die den Farbschlüssel angibt, der beim Verfassen des mehrstufigen Fensters verwendet werden soll. Verwenden Sie zum Generieren einer COLORREF das RGB-Makro .

[in, optional] pblend

Typ: BLENDFUNCTION*

Ein Zeiger auf eine -Struktur, der den Transparenzwert angibt, der beim Verfassen des mehrstufigen Fensters verwendet werden soll.

[in] dwFlags

Art: DWORD

Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
ULW_ALPHA
0x00000002
Verwenden Sie Pblend als Blendfunktion. Wenn der Anzeigemodus 256 Farben oder weniger beträgt, ist die Auswirkung dieses Werts identisch mit der Auswirkung von ULW_OPAQUE.
ULW_COLORKEY
0x00000001
Verwenden Sie crKey als Transparenzfarbe.
ULW_OPAQUE
0x00000004
Zeichnen Sie ein undurchsichtiges mehrschichtiges Fenster.
ULW_EX_NORESIZE
0x00000008
Erzwingen, dass die UpdateLayeredWindowIndirect-Funktion fehlschlägt, wenn die aktuelle Fenstergröße nicht mit der in psize angegebenen Größe übereinstimmt.
 

Wenn hdcSrcNULL ist, sollte dwFlags null sein.

Rückgabewert

Typ: BOOL

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Der Quell-DC sollte die Oberfläche enthalten, die den sichtbaren Inhalt des mehrstufigen Fensters definiert. Beispielsweise können Sie eine Bitmap in einem Gerätekontext auswählen, der durch Aufrufen der CreateCompatibleDC-Funktion abgerufen wird.

Eine Anwendung sollte SetLayout im hdcSrc-Gerätekontext aufrufen, um den Spiegelungsmodus ordnungsgemäß festzulegen. SetLayout Spiegel alle Zeichnungen ordnungsgemäß in einem HDC, während die Textglyphe und die Bitmaprichtungsreihenfolge (optional) ordnungsgemäß beibehalten werden. Die Zeichnung kann nicht direkt in die Bits einer geräteunabhängigen Bitmap (DEVICE-Independent Bitmap, DIB) geändert werden. Weitere Informationen finden Sie unter Fensterlayout und Spiegelung.

Die UpdateLayeredWindow-Funktion behält die Darstellung des Fensters auf dem Bildschirm bei. Die Fenster unter einem mehrschichtigen Fenster müssen nicht neu gezeichnet werden, wenn sie aufgrund eines Aufrufs von UpdateLayeredWindow aufgedeckt werden, da das System sie automatisch neu zeichnet. Dies ermöglicht eine nahtlose Animation des mehrschichtigen Fensters.

UpdateLayeredWindow aktualisiert immer das gesamte Fenster. Verwenden Sie zum Aktualisieren eines Teils eines Fensters die herkömmliche WM_PAINT , und legen Sie den Mischwert mithilfe von SetLayeredWindowAttributes fest.

Um eine optimale Zeichnungsleistung durch das mehrschichtige Fenster und alle zugrunde liegenden Fenster zu erzielen, sollte das mehrschichtige Fenster so klein wie möglich sein. Eine Anwendung sollte auch die Meldung verarbeiten und die mehrstufigen Fenster neu erstellen, wenn sich die Farbtiefe der Anzeige ändert.

Weitere Informationen finden Sie unter Mehrschichtige Fenster.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (windows.h einschließen)
Bibliothek User32.lib
DLL User32.dll
APIs ext-ms-win-ntuser-window-l1-1-1 (eingeführt in Windows 8.1)

Weitere Informationen

AlphaBlend

Konzept

CreateCompatibleBitmap

Andere Ressourcen

Referenz

SetWindowLong

SetWindowPos

TransparentBlt

Updatelayeredwindowindirect

Windows