KVRSOFT - Получаване и настройка на различни режими на видео адаптер
главата отговаря на програмиста.
- Наистина ли искаш?
- отговаря програмистът.
И Бил Гейтс каза:
- Ще имате една година на Windows "98!
В тази статия принципите на работа на функцията EnumDisplaySettings, която ви позволява да получите списък с налични резолюции на дисплея, ChangeDisplaySettings, за да промените текущата
И така, за да получим информация за възможните режими на адаптера, трябва да направим поредица от извиквания на функцията EnumDisplaySettings. Чрез извикване на тази функция всеки път получавате наличния режим, стига резултатът от функцията да е различен
процедура TForm1.FormCreate(Подател: TObject);
докато EnumDisplaySettings (nil,i,DevMode) правят
ListBox1.Items.Add (Формат ('%dx%d %d цвята',
След като всички режими са налични, задайте желаното специално усилие. функцията ChangeDisplaySettings. тази функция ще актуализира системния регистър на Windows, ако е необходимо.
процедура TForm1.Button1Click(Подател: TObject);
if EnumDisplaySettings (nil,Listbox1.ItemIndex,Devmode) тогава
liRetValue:= ChangeDisplaySettings(DevMode, CDS_UPDATEREGISTRY);
Изпращане на съобщение (HWND_BROADCAST, WM_DISPLAYCHANGE, SPI_SETNONCLIENTMETRICS, 0);
Функцията ChangeDisplaySettings връща дълго цяло число. може да се използва за определяне на успеха на функция чрез сравняване на константи.
Не се препоръчва да задавате наличната стойност. донесе екран или общо изображение.
Много адаптери (особено по-старите) могат да променят разделителната способност без да рестартират компютъра.
SendMessage се използва за информиране на всички прозорци
Промени в дисплея на монитора
За да проследите промените, трябва да създадете манипулатор, който да улавя съобщението WM_DISPLAYCHANGE. Обикновено този подходизползва се, ако приложението използва графики, трябва да рестартирате, за да промените разделителната способност, битовата дълбочина на цвета
TForm1 = клас (TForm)
процедура WMDisplayChange(вар съобщение:TMessage); съобщение WM_DISPLAYCHANGE;
процедура TForm1.WMDisplayChange(променливо съобщение: TMessage);
ShowMessage('Открити са промени в дисплея!');