SetBkMode-Funktion (wingdi.h)

Die SetBkMode-Funktion legt den Hintergrundmixmodus des angegebenen Gerätekontexts fest. Der Hintergrundmixmodus wird mit Text, geschlüpften Pinsel und Stiftformaten verwendet, die keine durchgezogenen Linien sind.

Syntax

int SetBkMode(
  [in] HDC hdc,
  [in] int mode
);

Parameter

[in] hdc

Ein Handle für den Gerätekontext.

[in] mode

Der Hintergrundmodus. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
UNDURCHSICHTIG
Der Hintergrund wird mit der aktuellen Hintergrundfarbe gefüllt, bevor der Text, der geschlüpfte Pinsel oder der Stift gezeichnet wird.
TRANSPARENT
Der Hintergrund bleibt unverändert.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt der Rückgabewert den vorherigen Hintergrundmodus an.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null.

Hinweise

Die SetBkMode-Funktion wirkt sich auf die Linienstile für Linien aus, die mit einem Stift erstellt wurden, der von der CreatePen-Funktion erstellt wurde. SetBkMode wirkt sich nicht auf Linien aus, die mit einem Stift erstellt wurden, der von der ExtCreatePen-Funktion erstellt wurde.

Beispiele

Informationen zum Transparenten oder Undurchsichtigen des Hintergrunds eines Schraffenpinsels finden Sie im Beispiel im Thema CreateHatchBrush .

Im nächsten Beispiel wird eine Zeichenfolge 36 Mal gezogen, wobei sie jedes Mal gegen den Uhrzeigersinn um 10 Grad gedreht wird. Außerdem wird der Hintergrundmodus auf transparent festgelegt, um den Text sichtbar zu machen.

#include "strsafe.h"
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;

    switch (message)
    {
    
    case WM_PAINT:
        {
        hdc = BeginPaint(hWnd, &ps);
        RECT rc; 
        int angle; 
        HGDIOBJ hfnt, hfntPrev; 
        WCHAR lpszRotate[22] = TEXT("String to be rotated.");
        HRESULT hr; 
        size_t pcch = 22;
 
// Allocate memory for a LOGFONT structure. 
 
PLOGFONT plf = (PLOGFONT) LocalAlloc(LPTR, sizeof(LOGFONT)); 
 
 
// Specify a font typeface name and weight. 
 
hr = StringCchCopy(plf->lfFaceName, 6, TEXT("Arial"));
if (FAILED(hr))
{
// TODO: write error handler
}

plf->lfWeight = FW_NORMAL; 
 
// Retrieve the client-rectangle dimensions. 
 
GetClientRect(hWnd, &rc); 
 
// Set the background mode to transparent for the 
// text-output operation. 
 
SetBkMode(hdc, TRANSPARENT); 
 
// Draw the string 36 times, rotating 10 degrees 
// counter-clockwise each time. 
 
for (angle = 0; angle < 3600; angle += 100) 
{ 
    plf->lfEscapement = angle; 
    hfnt = CreateFontIndirect(plf); 
    hfntPrev = SelectObject(hdc, hfnt);
    
    //
    // The StringCchLength call is fitted to the lpszRotate string
    //
    hr = StringCchLength(lpszRotate, 22, &pcch);
    if (FAILED(hr))
    {
    // TODO: write error handler
    } 
    TextOut(hdc, rc.right / 2, rc.bottom / 2, 
        lpszRotate, pcch); 
    SelectObject(hdc, hfntPrev); 
    DeleteObject(hfnt); 
} 
 
// Reset the background mode to its default. 
 
SetBkMode(hdc, OPAQUE); 
 
// Free the memory allocated for the LOGFONT structure. 
 
LocalFree((LOCALHANDLE) plf); 
        EndPaint(hWnd, &ps);
        break;
        }
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wingdi.h (einschließlich Windows.h)
Bibliothek Gdi32.lib
DLL Gdi32.dll

Weitere Informationen

CreatePen

ExtCreatePen

GetBkMode

Mal- und Zeichenfunktionen

Übersicht über Malerei und Zeichnung