창에서 그리는 경우
애플리케이션은 창을 처음 만들 때, 창의 크기를 변경할 때, 다른 창 뒤에서 창을 이동할 때, 창을 최소화하거나 최대화할 때, 열린 파일에서 데이터를 표시할 때, 표시된 데이터의 일부를 스크롤, 변경 또는 선택할 때 다양한 시간에 창을 그립니다.
시스템은 창 이동 및 크기 조정과 같은 작업을 관리합니다. 작업이 창의 내용에 영향을 주는 경우 시스템은 창의 영향을 받는 부분을 업데이트할 준비가 된 것으로 표시하고 다음 기회에 창의 창 프로시저에 WM_PAINT 메시지를 보냅니다. 이 메시지는 업데이트해야 하는 사항을 결정하고 필요한 그리기를 수행하기 위해 애플리케이션에 대한 신호입니다.
열려 있는 파일을 표시하고 표시된 데이터를 선택하는 등의 일부 작업은 애플리케이션에서 관리됩니다. 이러한 작업의 경우 애플리케이션은 작업의 영향을 받는 창 부분을 업데이트하도록 표시하여 다음 기회에 WM_PAINT 메시지를 보낼 수 있습니다. 작업에 즉각적인 피드백이 필요한 경우 작업이 진행되는 동안 WM_PAINT 기다리지 않고 애플리케이션을 그릴 수 있습니다. 예를 들어 일반적인 애플리케이션은 다음 WM_PAINT 메시지가 영역을 업데이트할 때까지 기다리지 않고 사용자가 선택하는 영역을 강조 표시합니다.
모든 경우에 애플리케이션은 생성되는 즉시 창에 그릴 수 있습니다. 창을 그리려면 애플리케이션은 먼저 창의 디스플레이 디바이스 컨텍스트에 대한 핸들을 검색해야 합니다. 이상적으로 애플리케이션은 WM_PAINT 메시지를 처리하는 동안 대부분의 그리기 작업을 수행합니다. 이 경우 애플리케이션은 BeginPaint 함수를 호출하여 디스플레이 디바이스 컨텍스트를 검색합니다. 애플리케이션이 WinMain 내에서 또는 키보드 또는 마우스 메시지를 처리하는 동안과 같은 다른 시간에 그리는 경우 GetDC 또는 GetDCEx 함수를 호출하여 디스플레이 DC를 검색합니다.