Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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, чтобы окно перерисовываться с новыми параметрами отрисовки.