Включить отображение программно - PullRequest
3 голосов
/ 06 октября 2011

Я пытаюсь включить дополнительный монитор в C ++.Кажется, что я пытаюсь изменить настройки дисплея, но на самом деле ничего не происходит, может кто-нибудь сказать мне, где я иду не так?

    std::wstring devName( L"Intel(R) HD Graphics Family" );
    std::wstring dispName( L"\\\\.\\DISPLAY3" );

    DISPLAY_DEVICE theDisplay;
    theDisplay.cb = sizeof(theDisplay);
    DWORD dev = 0;

    while(EnumDisplayDevices(0, dev, &theDisplay, 0))
    {
        if (devName.compare(theDisplay.DeviceString) == 0 && dispName.compare(theDisplay.DeviceName) == 0)
        {
            // found display adapter we're looking for
            if (theDisplay.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP)
            {
                // Display is part of desktop, turn al other monitors off
                cout << "Display is part of desktop\n";
            }
            else
            {
                // Display is off, turn it on
                DEVMODE dm;

                memset(&dm,0,sizeof(DEVMODE));
                dm.dmSize = sizeof (DEVMODE);
                dm.dmFields = DM_POSITION;
                dm.dmPosition.x = 3361;
                dm.dmPosition.y = 0;
                dm.dmPelsWidth = 1920;
                dm.dmPelsHeight = 1080;

                LONG ret = ChangeDisplaySettingsEx (theDisplay.DeviceName, &dm, NULL, CDS_UPDATEREGISTRY, NULL);
                if (ret != DISP_CHANGE_SUCCESSFUL)
                {
                    cout << "failed";
                }
            }
        }
        dev++;
    }

    system ("pause");
    return 0;
...