Função SetBkMode (wingdi.h)
A função SetBkMode define o modo de combinação em segundo plano do contexto do dispositivo especificado. O modo de combinação de plano de fundo é usado com texto, pincéis e estilos de caneta que não são linhas sólidas.
Sintaxe
int SetBkMode(
[in] HDC hdc,
[in] int mode
);
Parâmetros
[in] hdc
Um identificador para o contexto do dispositivo.
[in] mode
O modo de tela de fundo. Esse parâmetro pode usar um dos valores a seguir.
Valor | Significado |
---|---|
|
A tela de fundo é preenchida com a cor da tela de fundo atual antes que o texto, o pincel ou a caneta sejam desenhados. |
|
O plano de fundo permanece intocado. |
Valor retornado
Se a função for bem-sucedida, o valor retornado especificará o modo anterior em segundo plano.
Se a função falhar, o valor retornado será zero.
Comentários
A função SetBkMode afeta os estilos de linha para linhas desenhadas usando uma caneta criada pela função CreatePen . SetBkMode não afeta linhas desenhadas usando uma caneta criada pela função ExtCreatePen .
Exemplos
Para ver como tornar a tela de fundo de um pincel de hachura transparente ou opaca, consulte o exemplo mostrado no tópico CreateHatchBrush .
O exemplo a seguir desenha uma cadeia de caracteres 36 vezes, girando-a 10 graus no sentido anti-horário a cada vez. Ele também define o modo de tela de fundo como transparente para tornar o texto visível.
#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;
}
Requisitos
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | wingdi.h (inclua Windows.h) |
Biblioteca | Gdi32.lib |
DLL | Gdi32.dll |