Главная » 2D графика » Профессиональное создание хранителей экрана

RSS

Профессиональное создание хранителей экрана

Не нравитсяНравится   Рейтинг +2

Возможно у Вас не окажется под рукой Resource Workshop, тогда воспользуйтесь программой Restorator http://www.bome.com/ . Она позволяет просматривать ресурсы из готовых RES файлов, создавать свои ресурсы и изменять их. Редактирование возможно только в текстовом режиме, с последующей визуализацией при нажатии на клавишу F7, что конечно не совсем удобно, но это лучше чем ничего. Кстати, с помощью этой замечательной программы выполняют большинство русификаций программ т.к. она позволяет создавать так называемые Path фалы.

Итак в результате работы с перечисленными программами Вы получите RC файл. Его нужно скомпилировать в RES файл. Делается это всего одной командой:

brcc32.exe filename.rc

файл brcc32.exe находится в директории X:\DelphiX\Bin, по этому для вызова необходимо прописать путь к каталогу DelphiX\Bin в PATH.

Так же хочется сказать несколько слов о работе с контролами диалогов. Каждому контролу присваивается универсальный идентификатор, число. Оно задается в RC файле, например из нашего файла Settings.rc:

1
2
DEFPUSHBUTTON "OK", 5, 123, 134, 46, 16, NOT WS_TABSTOP
PUSHBUTTON "Cancel", 6, 71, 134, 46, 16, NOT WS_TABSTOP

у кнопки «OK» идентификатор равен 5. ( Если Вы точно уверены, что какой то элемент меняться не будет, например статичный текст с названием программы присвойте ему ID=-1)

Теперь в обработчике сообщений диалога:

1
2
3
4
5
   wm_Command:
   Begin
      If (LoWord(WParam) = 5) Then
      Begin
      ....

мы знаем что если параметр сообщения 5, это нажата клавиша Ok. Все очень просто. Теперь посмотри как изменить состояние элементов диалога, например состояние CheckBox’а. Для этого существуют парные функции:

1
2
3
4
5
Установка:
CheckDlgButton(HWind, ID, BST_UNCHECKED) или
CheckDlgButton(HWind, ID, BST_CHECKED)
Проверка:
IsDlgButtonChecked(HWind, ID)

Подробную информацию по флагам Вы можете получить из справки Windows SDK Help на соответствующие функции ( CheckDlgButton и IsDlgButtonChecked ). Для управления другими элементами диалога существуют другие функции, например CheckRadioButton, GetDlgItemInt, GetDlgItemText, SetDlgItemText и т.д. Напомню, что все эти функции реализуются посредствам передачи соответствующих сообщений элементу диалога.

Несколько слов по поводу графического исполнения программы … его практически нет, хотя разноцветные прямоугольники конечно и занимательно, но все же. Если Вы захотите создать хороший ScreenSaver, то он должен быть завораживающем, красивым. Итак как это сделать ? Все ваши фантазии будут происходить в обработчике сообщения WM_PAINT.

1
2
3
4
5
6
7
8
9
Procedure DrawSingleBox;
Var
  PaintDC : hDC;
  Info : TPaintStruct;
Begin
  PaintDC := BeginPaint(PreviewWindow, Info);
  { далее пойдут Ваши графические изыски }
  EndPaint(PreviewWindow, Info);
End;

Настоятельно рекомендую использовать библиотеку FastDIB и ее быстрые функции для работы с графикой. Так же Вам никто не запрещает воспользоваться DirectX или OpenGL.

Напоследок расскажу, как же можно получить эти настоящие 20 кб, а то и меньше.

Ну во первых, мы избавились от модуля SysUtils – выигрыш составил ~ 25 кб, а это уже ощутимо. Функцию str2int я позаимствовал из свободно распространяемой библиотеки KOL.
Хотите еще, пожалуйста. На сервере http://xcl.cjb.net находится замена стандартных модулей system, sysinit и т.д. Прописываем их в Seach Path и получаем выигрыш ~ 12 кб (накладываются некоторые ограничения на код, более подробно читайте в файле помощи).

Итак стандартный проект в 43 кб сократился до 11 кб, не плохо. Но мне было интересно что можно выжать еще. Про компрессоры исполняемых файлов Вы наверное слышали – ASPack, UPX и т.д. Воспользуемся бесплатной программой UPX 1.02 и получим размер exe файла в ~7 кб. В два раза меньше чем обещал автор в начале статьи. Но эти 7 кб берутся не из воздуха, размер занимаемой оперативной памяти увеличился. Так что компрессия исполняемых файлов, а тем более динамических библиотек (что вообще не допустимо), палка о двух концах – уменьшаем место на диске – увеличиваем расход памяти. Мой совет – не сжимайте файлы.

Исходный код проекта

Copyright © 1996 Jani Jarvinen, 2001 Мироводин Дмитрий

Страницы : 1 2 3 4 5

Таги: ,