IOleInPlaceSiteWindowless::GetDC 메서드(ocidl.h)
컨테이너에서 화면 또는 호환되는 디바이스에 대한 디바이스 컨텍스트에 대한 핸들이 있는 개체를 제공합니다.
구문
HRESULT GetDC(
[in] LPCRECT pRect,
[in] DWORD grfFlags,
[out] HDC *phDC
);
매개 변수
[in] pRect
포함하는 창의 클라이언트 좌표에서 개체가 다시 그리려는 사각형에 대한 포인터입니다. 이 매개 변수가 NULL이면 개체의 전체 범위가 다시 그려집니다.
[in] grfFlags
OLEDCFLAGS 열거형의 값 조합입니다.
[out] phDC
반환된 디바이스 컨텍스트에 대한 포인터입니다.
반환 값
이 메서드는 성공에 대한 S_OK 반환합니다. 다른 가능한 반환 값은 다음과 같습니다.
반환 코드 | 설명 |
---|---|
|
컨테이너가 이미 페인트 세션 중간에 있습니다. 즉, 이 메서드가 이미 호출되었으며 IOleInPlaceSiteWindowless::ReleaseDC 메서드가 아직 호출되지 않았습니다. |
설명
이 메서드에서 가져온 디바이스 컨텍스트는 IOleInPlaceSiteWindowless::ReleaseDC를 호출하여 해제해야 합니다.
이 인터페이스의 다른 메서드와 마찬가지로 사각형은 포함된 창의 클라이언트 좌표에 지정됩니다. 컨테이너는 이 사각형을 개체의 사이트 사각형과 교차하고 결과 사각형 외부의 모든 항목을 잘라낼 것으로 예상됩니다. 이렇게 하면 개체가 의도치 않게 그리는 것을 방지할 수 있습니다.
또한 컨테이너는 디바이스 컨텍스트 원본을 매핑해야 개체가 포함된 창의 클라이언트 좌표(일반적으로 컨테이너 창)에서 그릴 수 있습니다. 컨테이너가 창 디바이스 컨텍스트를 전달하기만 하면 자동으로 발생합니다. 다른 디바이스 컨텍스트(예: 오프스크린 메모리 디바이스 컨텍스트)를 반환하는 경우 뷰포트 원본을 적절하게 설정해야 합니다.
구현자에 대한 참고 사항
화면 또는 화면 끄기 디바이스 컨텍스트를 반환하는지 여부와 얼마나 정교한지에 따라 컨테이너는 다음 알고리즘 중 하나를 사용할 수 있습니다.- 화면의 원패스 드로잉
-
화면, 두 개의 패스 드로잉
- IOleInPlaceSiteWindowless::GetDC 메서드에서 컨테이너는 다음을 수행해야 합니다.
- 창 디바이스 컨텍스트를 가져옵니다.
- 겹치는 개체의 불투명 영역을 클리핑합니다. 이러한 지역은 화면에 이미 올바르기 때문에 다시 그릴 필요가 없습니다.
- OLEDC_PAINTBKGND 설정되지 않은 경우 디바이스 컨텍스트를 반환합니다.
- 그렇지 않으면 디바이스 컨텍스트를 요청하는 개체의 불투명 부분을 잘라내고 그 뒤에 있는 모든 개체의 불투명 부분을 앞뒤로 그립니다.
- 뒤로 돌아가서 모든 개체의 투명한 측면을 그려 매번 클리핑 영역을 적절하게 설정합니다.
- 마지막으로 디바이스 컨텍스트를 반환합니다.
- IOleInPlaceSiteWindowless::ReleaseDC 메서드에서 컨테이너는 다음을 수행해야 합니다.
- 겹치는 모든 개체의 투명한 부분을 그립니다.
- 디바이스 컨텍스트를 해제합니다.
- IOleInPlaceSiteWindowless::GetDC 메서드에서 컨테이너는 다음을 수행해야 합니다.
-
화면 끄기 그리기
- IOleInPlaceSiteWindowless::GetDC 메서드에서 컨테이너는 다음을 수행해야 합니다.
- 적절한 크기의 호환 비트맵을 포함하는 화면 호환 메모리 디바이스 컨텍스트를 만듭니다.
- 디바이스 컨텍스트의 뷰포트 원본을 매핑하여 호출 개체가 포함된 창의 클라이언트 영역 좌표를 사용하여 그릴 수 있는지 확인합니다.
- OLEDC_PAINTBKGND 설정된 경우 호출 개체 뒤에 있는 모든 개체의 DVASPECT_CONTENT 그립니다.
- 디바이스 컨텍스트를 반환합니다.
- IOleInPlaceSiteWindowless::ReleaseDC 메서드에서 컨테이너는 다음을 수행해야 합니다.
- 겹치는 모든 개체의 DVASPECT_CONTENT 측면을 그립니다.
- IOleInPlaceSiteWindowless::GetDC에서 호출 개체가 원래 요청한 위치의 화면에 오프스크린 비트맵을 복사합니다.
- 메모리 디바이스 컨텍스트를 삭제하고 해제합니다.
- IOleInPlaceSiteWindowless::GetDC 메서드에서 컨테이너는 다음을 수행해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | ocidl.h |