출력 클리핑
사용자가 메뉴에서 클립을 클릭하면 애플리케이션은 사용자가 만든 사각형의 좌표를 사용하여 클리핑 영역을 정의합니다. 클리핑 영역을 정의하고 애플리케이션의 디바이스 컨텍스트로 선택한 후 애플리케이션은 비트맵 이미지를 다시 그립니다. 애플리케이션은 다음과 같이 이러한 작업을 수행합니다.
// 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;
}