다음을 통해 공유


여러 모니터에 대한 지원을 추가하는 방법

DirectWrite 여러 모니터가 있는 시스템에 대한 지원이 포함되어 있습니다. 모니터에 따라 픽셀 기하 도형(RGB, BGR 또는 FLAT) 또는 기타 특성이 다를 수 있습니다. 픽셀 기하 도형에 대한 자세한 내용은 DWRITE_PIXEL_GEOMETRY 참조 항목을 참조하세요. 이 항목에서는 DirectWrite 애플리케이션에 여러 모니터에 대한 지원을 추가하는 방법을 보여 줍니다.

여러 모니터를 지원하려면 WM_WINDOWPOSCHANGED 창 메시지를 처리해야 합니다. 이 메시지는 창을 이동할 때 전송되므로 다음 코드와 같이 창이 다른 모니터로 이동되었는지 검사 합니다.

case WM_WINDOWPOSCHANGED:
    {
        HMONITOR monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONULL);
        if (monitor != g_monitor)
        {
            g_monitor = monitor;
            if (g_spRenderTarget != NULL)
            {
                IDWriteRenderingParams* pRenderingParams = NULL;
                g_spDWriteFactory->CreateMonitorRenderingParams(monitor, &pRenderingParams);

                g_spRenderTarget->SetTextRenderingParams(pRenderingParams);

                SafeRelease(&pRenderingParams);
            }

            InvalidateRect(hwnd, NULL, TRUE);
        }
    }
    break;

창이 새 모니터에 있는 경우 IDWriteFactory::CreateMonitorRenderingParams 메서드를 사용하여 새 모니터에 대한 렌더링 매개 변수를 만들어야 합니다.

참고

IDWriteFactory::CreateRenderingParams 메서드는 항상 기본 모니터에 대한 매개 변수를 만들기 때문에 렌더링 매개 변수를 만들지 마세요.

 

IDWriteRenderingParams 개체가 있는 경우 ID2DRenderTarget::SetTextRenderingParams 메서드를 사용하여 렌더링 대상에 대한 렌더링 매개 변수를 설정합니다.

마지막으로 InvalidateRect 함수를 사용하여 창이 새 렌더링 매개 변수로 다시 그리도록 합니다.