Как выбрать монитор для поворота экрана функцией ChangeDisplaySettingsEx(NULL, &devMode, NULL, NULL, NULL); c++

ConsoleApplication2.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.

    #include <iostream>
    #include <windows.h>

    using namespace std;

void ShowDevMode(DEVMODE& devMode)
{
    cout << "DEVMODE Settings:" << endl;
    cout << "  dmPelsWidth:          " << devMode.dmPelsWidth << endl;
    cout << "  dmPelsHeight:         " << devMode.dmPelsHeight << endl;
    cout << "  dmBitsPerPel:         " << devMode.dmBitsPerPel << endl;
    cout << "  dmDisplayFrequency:   " << devMode.dmDisplayFrequency << endl;
    cout << "  dmDisplayOrientation: " << devMode.dmDisplayOrientation << endl;
}

void ShowResult(long Result)
{
    switch (Result)
    {
    case DISP_CHANGE_SUCCESSFUL:
        cout << "ChangeDisplaySettingsEx returns DISP_CHANGE_SUCCESSFUL" << endl;
        break;
    case DISP_CHANGE_BADFLAGS:
        cout << "ChangeDisplaySettingsEx returns DISP_CHANGE_BADFLAGS" << endl;
        break;
    case DISP_CHANGE_BADMODE:
        cout << "ChangeDisplaySettingsEx returns DISP_CHANGE_BADMODE" << endl;
        break;
    case DISP_CHANGE_BADPARAM:
        cout << "ChangeDisplaySettingsEx returns DISP_CHANGE_BADPARAM" << endl;
        break;
    case DISP_CHANGE_FAILED:
        cout << "ChangeDisplaySettingsEx returns DISP_CHANGE_FAILED" << endl;
        break;
    case DISP_CHANGE_NOTUPDATED:
        cout << "ChangeDisplaySettingsEx returns DISP_CHANGE_NOTUPDATED" << endl;
        break;
    case DISP_CHANGE_RESTART:
        cout << "ChangeDisplaySettingsEx returns DISP_CHANGE_RESTART" << endl;
        break;
    default:
        cout << "ChangeDisplaySettingsEx - Unexpected return value." << endl;
    }
}

void rotate()
{
    DEVMODE devMode;
    long r;


    // Init DEVMODE to current settings
    ZeroMemory(&devMode, sizeof(DEVMODE));
    devMode.dmSize = sizeof(devMode);
    EnumDisplaySettingsEx(NULL, ENUM_CURRENT_SETTINGS, &devMode, NULL);
    ShowDevMode(devMode);

    if (devMode.dmDisplayOrientation == 0)   // 0 - книжная ориентация, 1 - альбомная
    {
        /* Rotate Orientation - Default */
        devMode.dmDisplayOrientation = 1;
    }
    else 
    {
        /* Rotate Orientation - 90 */
        devMode.dmDisplayOrientation = 0;
        
    }
    swap(devMode.dmPelsHeight, devMode.dmPelsWidth);

    devMode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYORIENTATION;

    r = ChangeDisplaySettingsEx(NULL, &devMode, NULL, NULL, NULL);  //Применяет поворот экрана;
    ShowResult(r);



    // Reread current settings
    ZeroMemory(&devMode, sizeof(DEVMODE));
    devMode.dmSize = sizeof(devMode);
    EnumDisplaySettingsEx(NULL, ENUM_CURRENT_SETTINGS, &devMode, NULL);
    ShowDevMode(devMode);
}

int main(int argc, char** argv)
{
    rotate();
    cout << "bye";
    //cin.get();
    //cin.get();
    return 0;
}

Как я понимаю, первый входной параметр - это устройство отображения. Я почитал про данную функцию, но у меня так и не получилось указать (выбрать) какой монитор (1й или 2й) будет менять ориентацию (книжная или альбомная). 1й параметр NULL, как понимаю, использует основной экран и меняет ориентацию (программа работает), но не получается выбрать второй экран.


Ответы (0 шт):