Condividi tramite


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.