Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Нестандартные приемы программирования Delphi - Ревич Ю.

Ревич Ю. Нестандартные приемы программирования Delphi — Спб.: БХВ-Петербург, 2005. — 560 c.
ISBN 5-94157-686-2
Скачать (прямая ссылка): nestandartniepriemiprogrammirovanie2005.djvu
Предыдущая << 1 .. 37 38 39 40 41 42 < 43 > 44 45 46 47 48 49 .. 218 >> Следующая

запуске создается иконка, при щелчке на ней левой кнопкой в верхнем левом
углу экрана возникает пустое окно-прямоугольник 200x200, при нажатии
клавиши <Esc> программа закрывается, и иконка при этом уничтожается. Если
мы исследуем свойства полученной программы немного подробнее, то увидим,
что при запуске вне среды Delphi программа не будет реагировать на
нажатие <Esc>, пока мы не сфокусируемся на ее пустом окне мышью. Эго и
понятно - пока окно не сфокусировано, оно не знает, что нажатие клавиши
<Esc> предназначено именно ему. Можно исправить это, заставив окно при
вызове сразу располагаться поверх всех окон (вызовом функции
BringWindowToTop), но это будет полумера для данного конкретного случая:
нам окно вообще-то само по себе не требуется, наша задача сделать так,
чтобы программа работала по нажатию клавиши вообще без всякого (видимого)
окна. Поэтому мы воспользуемся регистрацией горячей клавиши, как делали
раньше. Вставим вызов регистрационной функции в нашу программу перед
созданием иконки (клавишу возьмем ту же самую <Ctrl>+<F12>):
RegisterHotKey(FHandle, 1 ,MDD_CONTROL, vk_F12); (регистрируем
клавишу Ctrl+F12)
CreateMyicon; (создаем иконку)
4 Зак. 1324
98
Гпава 5
А в процедуру обработки сообщений добавим следующий текст:
if Msg = WM_HOTKEY then {если нажата горячая клавиша}
if wpr=l then (и ее номер 1}
begin
Shell_NotifyIcon(NIM_Delete,@noIconData)? (удаляем иконку}
UnregisterHotKey(FHandle, 1); (убираем горячую клавишу} halt; (закрываем
программу} end;
Запустим программу и убедимся, что она работает как надо: при запуске
иконка создается, а при нажатии комбинации клавиш <Ctrl>+<F12> программа
закрывается. Теперь отладка прототипа закончена. Кстати, обратите
внимание на размер исполняемого файла- чуть больше 40 Кбайт. Вот что
значит не использовать графические ресурсы!
Резидентная программа для исправления текста в неправильной раскладке
Попробуем на основе нашего прототипа создать программу, которая по
нажатию комбинации клавиш <Ctrl>+<F12> исправляет текст, набранный в
неправильной раскладке клавиатуры. С целью как можно больше рассказать о
методах обращения с функциями API, я покажу процесс поэтапного создания
разных вариантов все более работоспособной программы.
Заготовка
Перенесем проект из папки Glava5\2 в другую папку (на диске- Glava5V3),
на этот раз через пункт File | Save Project as под новым именем: Layout
("раскладка") . Так как мы не используем модулей, кроме стандартных, то
больше ничего в проекте изменять не придется (в том числе и редактировать
DSK-файл). Затем удалим из обработчика сообщений ненужные действия
(обработка нажатия клавиши <Esc>), а обработку нажатия кнопки мыши
перепишем следующим образом:
if Msg = IcoMessage then (если это сообщение от иконки} begin
if lpr=WM_RBUTTONUP then {была отпущена ггравая кнопка} begin
if MessageBox(FHandle,'Вы хотите закрыть программу
Layout?','Warning',MB_YESNO)=idYES then
Чертик из табакерки
99
begin
Shell_NotifyIcon(NIM_Delete,@noIconData); /удаляем иконку}
UnregisterHotKey(FHandle, 1); {убираем горячую клавишу} halt; {закрываем
программу} mad; mad; mad;
Левую кнопку мыши мы освободили- она нам еще понадобится, а при щелчке
правой кнопкой на иконке у нас теперь будет возникать соответствующее
окно с выбором: закрывать программу или нет. В принципе можно было бы и
сократить текст, убрав ненужные пункты при заполнении структуры
windowciass (все равно окно показываться не будет), но смысла заниматься
этим, рискуя что-то нарушить в программе, нет - структура так или иначе
будет занимать место в памяти. Не забудем только заменить текст
всплывающей подсказки Projectl на что-то более осмысленное, например
Language Layout.
Теперь изменим иконку приложения- раньше мы делали это через меню в
свойствах главной формы, но теперь, поскольку ее нет, запустим Image
Editor и вручную отредактируем файл ресурса Layout.res, относящийся к
нашему проекту. Всю эту операцию надо проделывать при закрытой Delphi, т.
е. запускать Image Editor надо не из среды через меню Tools | Image
Editor, а через меню Пуск | Программы, папка Borland Delphi 7. Открыв
Layout.res в редакторе (пункт File | Open), найдем там иконку (она только
одна там и будет), у которой должно быть имя MAINICON, и откроем ее в
отдельном окне (для это надо дважды щелкнуть по ее названию). Заранее
подберем какую-нибудь подходящую иконку из коллекции, символизирующую,
например, редактирование текста (на диске я ее расположил в папке с
текущим проектом под названием editl.ico). Откроем файл с этой иконкой в
другом окне Image Editor (пункт File | Open с установкой фильтра для
файлов ICO - см. рис. 5.1) и заменим одну иконку на другую простым
методом Сору-Paste. После этого измененный файл ресурсов надо сохранить
(File | Save), закрыть окна с иконками, и закрыть окно Image Editor.
Итак, после того как мы отладили весь антураж, нам остается оформить саму
процедуру исправления раскладки, заменив в ней закрытие программы в
Предыдущая << 1 .. 37 38 39 40 41 42 < 43 > 44 45 46 47 48 49 .. 218 >> Следующая