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.
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 |