Recorte de la salida
Después de que el usuario haga clic en Clip en el menú, la aplicación usa las coordenadas del rectángulo que creó el usuario para definir una región de recorte. Después de definir la región de recorte y seleccionarla en el contexto del dispositivo de la aplicación, la aplicación vuelve a dibujar la imagen de mapa de bits. La aplicación realiza estas tareas, como se indica a continuación.
// These variables are required for clipping.
static POINT ptUpperLeft;
static POINT ptLowerRight;
static POINT aptRect[5];
static POINT ptTmp;
static POINTS ptsTmp;
static BOOL fDefineRegion;
static BOOL fRegionExists;
static HRGN hrgn;
static RECT rctTmp;
int i;
case WM_COMMAND:
switch (wParam)
{
case IDM_CLIP:
hdc = GetDC(hwnd);
// Retrieve the application's client rectangle and paint
// with the default (white) brush.
GetClientRect(hwnd, &rctTmp);
FillRect(hdc, &rctTmp, GetStockObject(WHITE_BRUSH));
// Use the rect coordinates to define a clipping region.
hrgn = CreateRectRgn(aptRect[0].x, aptRect[0].y,
aptRect[2].x, aptRect[2].y);
SelectClipRgn(hdc, hrgn);
// Transfer (draw) the bitmap into the clipped rectangle.
BitBlt(hdc,
0, 0,
bmp.bmWidth, bmp.bmHeight,
hdcCompatible,
0, 0,
SRCCOPY);
ReleaseDC(hwnd, hdc);
break;
}