Megosztás a következőn keresztül:


Számbavétel és megjelenítési vezérlő

A számítógép összes eszközének számbavételéhez hívja meg a EnumDisplayDevices függvényt. A visszaadott információk azt is jelzik, hogy melyik monitor az asztal része.

A vágórégiót metsző asztali eszközök számbavételéhez hívja meg EnumDisplayMonitors. Ez minden monitorhoz visszaadja a HMONITOR-leírót, amelyet a GetMonitorInfohasznál. A virtuális képernyő összes eszközének számbavételéhez használja EnumDisplayMonitors. az alábbi kódban látható módon:

EnumDisplayMonitors(NULL, NULL, MyInfoEnumProc, 0);  

A megjelenítendő eszközre vonatkozó információk lekéréséhez használja EnumDisplaySettings vagy EnumDisplaySettingsEx.

A ChangeDisplaySettingsEx függvénnyel szabályozható a számítógép kijelzőeszközei. Módosíthatja az eszközök konfigurációját, például megadhatja egy monitor pozícióját a virtuális asztalon, és módosíthatja a kijelzők bitmélységét. Az alkalmazások általában nem használják ezt a függvényt. Ha programozott módon szeretne megjelenítési monitort hozzáadni egy többmonitoros rendszerhez, állítsa DEVMODE.dmFields DM_POSITION, és adjon meg egy pozíciót (DEVMODE.dmPosition használatával) a meglévő monitor megjelenítési területének legalább egy képpontja mellett. A monitor leválasztásához állítsa DEVMODE.dmFields DM_POSITION, és állítsa DEVMODE.dmPelsWidth és DEVMODE.dmPelsHeight nullára.

Az alábbi kód bemutatja, hogyan lehet leválasztani az összes másodlagos megjelenítési eszközt az asztalról:

void DetachDisplay()
{
    BOOL            FoundSecondaryDisp = FALSE;
    DWORD           DispNum = 0;
    DISPLAY_DEVICE  DisplayDevice;
    LONG            Result;
    TCHAR           szTemp[200];
    int             i = 0;
    DEVMODE   defaultMode;

    // initialize DisplayDevice
    ZeroMemory(&DisplayDevice, sizeof(DisplayDevice));
    DisplayDevice.cb = sizeof(DisplayDevice);

    // get all display devices
    while (EnumDisplayDevices(NULL, DispNum, &DisplayDevice, 0))
        {
        ZeroMemory(&defaultMode, sizeof(DEVMODE));
        defaultMode.dmSize = sizeof(DEVMODE);
        if ( !EnumDisplaySettings((LPSTR)DisplayDevice.DeviceName, ENUM_REGISTRY_SETTINGS, &defaultMode) )
                  OutputDebugString("Store default failed\n");

        if ((DisplayDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) &&
            !(DisplayDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE))
            {
            DEVMODE    DevMode;
            ZeroMemory(&DevMode, sizeof(DevMode));
            DevMode.dmSize = sizeof(DevMode);
            DevMode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL | DM_POSITION
                        | DM_DISPLAYFREQUENCY | DM_DISPLAYFLAGS ;
            Result = ChangeDisplaySettingsEx((LPSTR)DisplayDevice.DeviceName, 
                                            &DevMode,
                                            NULL,
                                            CDS_UPDATEREGISTRY,
                                            NULL);

            //The code below shows how to re-attach the secondary displays to the desktop

            //ChangeDisplaySettingsEx((LPSTR)DisplayDevice.DeviceName,
            //                       &defaultMode,
            //                       NULL,
            //                       CDS_UPDATEREGISTRY,
            //                       NULL);

            }

        // Reinit DisplayDevice just to be extra clean

        ZeroMemory(&DisplayDevice, sizeof(DisplayDevice));
        DisplayDevice.cb = sizeof(DisplayDevice);
        DispNum++;
        } // end while for all display devices
}

Az alkalmazás minden megjelenítési eszközhöz mentheti az eszköz konfigurációs paramétereit és a helyparamétereket leíró információkat a beállításjegyzékben. Az alkalmazás azt is meghatározhatja, hogy mely kijelzők tartoznak az asztalhoz, és melyek nem, a DISPLAY_DEVICE struktúrában lévő DISPLAY_DEVICE_ATTACHED_TO_DESKTOP jelzőn keresztül. Miután az összes konfigurációs információt a beállításjegyzékben tárolta, az alkalmazás újra meghívhatja ChangeDisplaySettingsEx a beállítások dinamikus módosításához, újraindítás nélkül.