Come aggiungere il supporto per più monitoraggi
DirectWrite include il supporto per i sistemi con più monitor. I monitor diversi possono avere una geometria di pixel diversa (RGB, BGR o FLAT) o altri attributi. Per altre informazioni sulla geometria dei pixel, vedere l'argomento di riferimento DWRITE_PIXEL_GEOMETRY. Questo argomento illustra come aggiungere il supporto per più monitoraggi all'applicazione DirectWrite.
Per supportare più monitor, è necessario gestire il messaggio di finestra WM_WINDOWPOSCHANGED. Questo messaggio viene inviato quando la finestra viene spostata, quindi è necessario verificare se la finestra è stata spostata in un monitor diverso, come illustrato nel codice seguente.
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;
Se la finestra si trova in un nuovo monitor, è necessario creare parametri di rendering per il nuovo monitoraggio usando il metodo IDWriteFactory::CreateMonitorRenderingParams.
Nota
Non usare il metodo IDWriteFactory::CreateRenderingParams per creare i parametri di rendering, perché crea sempre parametri per il monitoraggio primario.
Quando si dispone di un oggetto IDWriteRenderingParams, impostare i parametri di rendering per il target di rendering usando il metodo ID2DRenderTarget::SetTextRenderingParams.
Usare infine la funzioneInvalidateRectper fare in modo che la finestra si ridisegni con i nuovi parametri di rendering.