Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DirectWrite obejmuje obsługę systemów z wieloma monitorami. Różne monitory mogą mieć inną geometrię pikseli (RGB, BGR lub FLAT) lub inne atrybuty. Aby uzyskać więcej informacji na temat geometrii pikseli, zobacz temat referencyjny DWRITE_PIXEL_GEOMETRY. W tym temacie pokazano, jak dodać obsługę wielu monitorów do aplikacji DirectWrite.
Aby obsługiwać wiele monitorów, należy obsługiwać komunikat okna WM_WINDOWPOSCHANGED. Ten komunikat jest wysyłany po przeniesieniu okna, dlatego należy sprawdzić, czy okno zostało przeniesione do innego monitora, jak pokazano w poniższym kodzie.
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;
Jeśli okno znajduje się na nowym monitorze, należy utworzyć parametry renderowania dla nowego monitora przy użyciu metody IDWriteFactory::CreateMonitorRenderingParams.
Notatka
Nie należy używać metody IDWriteFactory::CreateRenderingParams, aby utworzyć parametry renderowania, ponieważ zawsze tworzy parametry dla monitora podstawowego.
Jeśli masz obiekt IDWriteRenderingParams, ustaw parametry renderowania dla obiektu docelowego renderowania przy użyciu metody ID2DRenderTarget::SetTextRenderingParams.
Na koniec użyj funkcji InvalidateRect, aby spowodować ponowne rysowanie okna przy użyciu nowych parametrów renderowania.