Come aggiungere il supporto per più monitoraggi
DirectWrite include il supporto per i sistemi con più monitoraggi. I monitor diversi possono avere geometria di pixel diversi (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ù monitoraggi, è necessario gestire il messaggio della finestra di WM_WINDOWPOSCHANGED . Questo messaggio viene inviato quando la finestra viene spostata, quindi è necessario verificare se la finestra è stata spostata in un monitoraggio 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 monitoraggio, è 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 la destinazione di rendering usando il metodo ID2DRenderTarget::SetTextRenderingParams .
Infine, usare la funzione InvalidateRect per causare il ridisegno della finestra con i nuovi parametri di rendering.