15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту

Borland C++ Builder FAQ
Составлен по материалам форума на Исходниках.Ru
Содержание Последнее обновление: 14.02.2004

Размер экрана

Автор(ы): kenai, OlegGG, trainer
Исходная ссылка: - - -

Как узнать высоту и ширину экрана в пикселях?
Для этого можно воспользоваться глобальным объектом Screen, при этом:
  Screen->Width - ширина;
  Screen->Height - высота.


Как сменить разрешение экрана?
DEVMODE dm;
dm.dmSize = sizeof(DEVMODE);
int index = 0;
while (EnumDisplaySettings(NULL, index, &dm))
{
  if (dm.dmPelsWidth == 800 && dm.dmPelsHeight == 600)
  {
    dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
    LONG result = ChangeDisplaySettings(&dm, CDS_TEST);
    if (result == DISP_CHANGE_SUCCESSFUL)
    {
      ChangeDisplaySettings(&dm, 0);
      break;
    }
    else if (result == DISP_CHANGE_RESTART)
    {
      ShowMessage("Требуется перезагрузка");
      break;
    }
    else
    {
      ShowMessage("Установка не поддерживается монитором");
      break;
    }
  }
  index++;
}

Как узнать размер рабочей области экрана?
Прим.: Рабочая область - часть экрана, не закрываемая панелью задач
TRect rect;
if( SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0) ) {
   // получили размер рабочей области
   ShowMessage("WorkArea size is "+AnsiString(rect.Width())+"x"+AnsiString(rect.Height()));
} else {
   // не удалось получить размер рабочей области
   ShowMessage("GetWorkArea failed");
}