다음을 통해 공유


창 업데이트 잠금

창 업데이트 잠금은 창에서 그리기의 임시 일시 중단입니다. 시스템은 잠금을 사용하여 사용자가 창을 이동하거나 크기를 조정할 때마다 다른 창이 추적 사각형 위로 그리는 것을 방지합니다. 애플리케이션은 잠금을 사용하여 자체 창에서 유사한 이동 또는 크기 조정 작업을 수행하는 경우 그리기를 방지할 수 있습니다.

애플리케이션은 LockWindowUpdate 함수를 사용하여 창 업데이트 잠금을 설정하거나 지우고 잠글 창을 지정합니다. 잠금은 지정된 창과 모든 자식 창에 적용됩니다. 잠금이 설정되면 GetDCBeginPaint 함수는 표시되는 영역이 비어 있는 디스플레이 디바이스 컨텍스트를 반환합니다. 이 경우 애플리케이션은 창에서 계속 그릴 수 있지만 모든 출력이 잘립니다. 잠금은 애플리케이션이 LockWindowUpdate를 호출하고 창에 NULL 을 지정하여 잠금을 지울 때까지 유지됩니다. LockWindowUpdate는 창의 표시 영역을 강제로 비워 두지만, 함수는 지정된 창을 표시하지 않고 WS_VISIBLE 스타일 비트를 지우지 않습니다.

잠금이 설정되면 애플리케이션은 DCX_LOCKWINDOWUPDATE 값과 함께 GetDCEx 함수를 사용하여 잠긴 창 위에 그리는 디스플레이 디바이스 컨텍스트를 검색할 수 있습니다. 이렇게 하면 키보드 또는 마우스 메시지를 처리할 때 애플리케이션에서 추적 사각형을 그릴 수 있습니다. 시스템은 사용자가 창을 이동하고 크기를 조정할 때 이 메서드를 사용합니다. GetDCEx 는 디스플레이 디바이스 컨텍스트 캐시에서 디스플레이 디바이스 컨텍스트를 검색하므로 애플리케이션은 그리기 후 가능한 한 빨리 디바이스 컨텍스트를 해제해야 합니다.

창 업데이트 잠금이 설정되는 동안 시스템은 잠긴 각 창에 대해 누적된 경계 사각형을 만듭니다. 잠금이 지워지면 시스템에서 이 경계 사각형을 사용하여 창 및 해당 자식 창에 대한 업데이트 영역을 설정하여 최종 WM_PAINT 메시지를 강제로 적용합니다. 누적 경계 사각형이 비어 있는 경우(즉, 잠금이 설정된 동안 그리기 발생이 없는 경우) 업데이트 영역이 설정되지 않습니다.