Хорошо, сначала вам нужно создать контекст устройства:
http://msdn.microsoft.com/en-us/library/dd183490(v=VS.85).aspx Следующий код даст вам все мониторы:
CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL)
Затем вы вызываете EnumDisplayDevices для DeviceContext, у которого будет указатель на структуру DISPLAY_DEVICE, которая содержит информацию о настройках устройства отображения .
http://msdn.microsoft.com/en-us/library/dd162609(v=VS.85).aspx
По MSDN:
Чтобы запросить все устройства отображения в текущем сеансе, вызовите эту функцию в цикле, начиная с iDevNum, установленной в 0, и увеличивая iDevNum, пока не произойдет сбой функции. Чтобы выбрать все устройства отображения на рабочем столе, используйте только те устройства отображения, которые имеют флаг DISPLAY_DEVICE_ATTACHED_TO_DESKTOP в структуре DISPLAY_DEVICE.
Чтобы получить информацию об адаптере дисплея, вызовите EnumDisplayDevices с lpDevice, установленным в NULL. Например, DISPLAY_DEVICE.DeviceString содержит имя адаптера.
Чтобы получить информацию на мониторе дисплея, сначала вызовите EnumDisplayDevices с lpDevice, установленным в NULL. Затем вызовите EnumDisplayDevices с lpDevice, для которого установлено DISPLAY_DEVICE.DeviceName, от первого вызова EnumDisplayDevices и с iDevNum, установленным в ноль. Тогда DISPLAY_DEVICE.DeviceString - это имя монитора.
Чтобы запросить все устройства мониторинга, связанные с адаптером, вызовите EnumDisplayDevices в цикле с lpDevice, для которого задано имя адаптера, iDevNum - с 0, а iDevNum - с приращением до сбоя функции. Обратите внимание, что DISPLAY_DEVICE.DeviceName изменяется при каждом вызове для получения информации о мониторе, поэтому необходимо сохранить имя адаптера. Функция не работает, если больше нет мониторов для адаптера.
Я не программист на C ++, однако мне приходилось кодировать некоторые вещи для отображения в далеком прошлом, и я просто пытался помочь с тем, что я помню. Я немного заржавел на WINAPI.