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.