четверг, 12 июля 2012 г.

Функция GetSystemMetrics

Я не люблю много времени тратить на поиски информации о какой либо функции. Это конечно же может задеть вас как человека в этом плане ответственного, делающего все до победного конца.
По этому я буду разбирать данную функцию методом тыка, т.е. попробовал применить, посмотрел результат.
Первым делом поискать описание данной функции в help файле Delphi 7. Открываем строку поиска, вводим GetSystemMetrics и ожидаем в предвкушение результата. Ну что, есть что нибудь? У меня есть, возможно у вас тоже что-то найдется. Видим что все написано на английском, если у вас на русском, то вы первый обладатель справки по Delphi 7 на русском языке. Попробуем понять и прочесть то, что до нас хотели довести по этой функции составители документации. Ни чего не понятно? Загоним это в Google Translator.

Стало чуть проще. Данная функция получает метрики и конфигурационные настройки системы. Слово метрики не совсем понятно, возможно имеют в виду размеры. Переведем следующую строчку.
Получает ширину и высоту элементов экрана Windows. Все возвращает в пикселях. Так, может на примерах попонятней будет.
int GetSystemMetrics(
  int nIndex // Указываются параметр того, что мы хотим получить
);


syntax highlighted by Code2HTML, v. 0.9.1
Что мы можем из этого заключить? Функция в качестве аргумента передается параметр того что мы хотим получить (Например размеры экрана по x или у, количество кнопок у мыши и т.д.) результатом функция возвратит нам эти значения. Если функция завершится с ошибкой, она вернет ноль.
Так, ну что продолжим изучение на примере.
Предполагается что вы знакомы со средой Delphi 7 и легко сможете разобраться куда писать соответствущий код для достижения нужного нам результата. Попробую расписать подробно, но могу забыть что-нибудь.
Создадим новый VCL проект File -> New -> VCL Forms Applicatio - Delphi for Win32
Сохраним проект под любым удобным для вас именем File -> Save Project As.. И имя тебе будет ex_p1, модуль формы назовем ex_p1_unit.
С именем определились, теперь необходимо решить что выводить на нашу форму. Для на нашего примера вполне достаточно вывести размеры экрана и количество кнопок мыши. Остальные параметры вы можете вывести самостоятельно.
Для это нам потребуется четыре Label, и одна кнопка закрытия окна. Четыре Label мы расположим на одной панели с включенным свойством Align := alClient, кнопку мы расположим на второй панели с включенным Align := alBottom. Это кнопка типа TBitBtn c установленным свойством Kind := bkClose. У нашей формы Form1 меняем одно свойство BorderStyle := bsDialog.
У вас должно получиться что-то в этом духе:

Переходим к реализации кода.
Начнем с обработчика событий OnCreate. В этом обработчике, в основном, и будут производится все страшные манипуляции с функцией GetSystemMetrics.
Заведем три переменных для хранения результата возвращаемого функцией GetSystemMetrics:
  • для количества кнопок мыши (MouseButtonCount)
  • для количества пикселей экрана по x (XScreenResolution)
  • для количества пикселей экрана по y (YScreenResolution)
Параметры которые мы должный передать в GetSystemMetrics следующие:
  • для количества кнопок мыши (SM_CMOUSEBUTTONS)
  • для количества пикселей экрана по x (SM_CXSCREEN)
  • для количества пикселей экрана по y (SM_CYSCREEN)

procedure TForm1.FormCreate(Sender: Tobject);
var
  MouseButtonCount: Integer;
  XScreenResolution: Integer;
  YScreenResolution: Integer;
begin
  MouseButtonCount := GetSystemMetrics( SM_CMOUSEBUTTONS);
  XScreenResolution := GetSystemMetrics(SM_CXSCREEN);
  YScreenResolution := GetSystemMetrics(SM_CYSCREEN);
  Label4.Caption := IntToStr(MouseButtonCount);
  Label2.Caption := IntToStr(XScreenResolution) + ' X ' + IntToStr(YScreenResolution);
end;


syntax highlighted by Code2HTML, v. 0.9.1

На этом примере можно посмотреть и другие параметры.

Комментариев нет:

Отправить комментарий