여러 모니터에 대한 지원을 추가하는 방법
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 함수를 사용하여 창이 새 렌더링 매개 변수로 다시 그리도록 합니다.