Если вы читаете эту книгу, значит вы подумываете о том, как бы поставить и попробовать Ubuntu. Наверняка, вы не захотите сразу отказываться от Windows и поставите Ubuntu, как вторую ОС (операционную систему). Возможно, вы как и я долго метались от дистрибутива к дистрибутиву и решали, какой же установить. Уверяю вас, вы сделали правильный выбор. Данная книга проведёт небольшую, но базовую экскурсию на тему установки и настройки. Я уверен, что вы найдёте эту книгу интересной для себя. Если у вас возникают какие-либо вопросы, я могу осветить их в новой версии этой книги. С радостью выслушаю критику, пожелания и вопросы. Для связи со мной использовать почту [email protected]. Для получение бесплатных консультаций или ответов на ваши вопросы используйте контакты, полученные после подписки на рассылку http://ubuntubook.ru. С уважением, Дмитрий Котенок. |
Это книга о русской блогосфере, написанная как документальный роман-френдлента. Ее герои — самые известные, яркие и успешные блогеры Рунета: Антон Носик, Рустем Адагамов, Артемий Лебедев, Линор Горалик, Марта Кетро, Максим Кононенко, Сталик Ханкишиев, Вера Полозкова — восемь человек, которые стали такими, какие они есть, во многом благодаря интернету и которые сделали интернет таким, каким мы знаем его сегодня. Эти восемь человек — во всех смыслах первые лица русской блогосферы — рассказывают о том, как открыли для себя Всемирную паутину, как обустроили ее и приспособили для жизни. Нам, читающим эту френдленту, решать, как в ней жить сегодня. |
Вопросы и Ответы
36. Каким образом работать с иконками расположенными в панели задач Win'95?
Функция работы с, так называемыми, нотификационными иконками, которые находятся в правой части панели задач Windows'95, определена в модуле ShellAPI:
function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData): BOOL;
В зависимости от переданного сообщения в параметре dwMessage, эта функция может добавлять, модифицировать или удалять иконки, данные о которых передаются в параметре lpData. Поддерживаются три сообщения:
Сообщение |
Описание |
NIM_ADD | Добавить иконку в панель задач. |
NIM_MODIFY | Изменить параметры иконки в панели задач. |
NIM_DELETE | Удалить иконку из панели задач. |
Для работы с нотификационными иконками необходимо правильно заполнить поля данных, которые содержатся в структуре TNotifyIconData:
Поле |
Тип |
Описание |
||||||||
cbSize |
DWORD |
Размер передаваемой структуры. | ||||||||
Wnd |
HWND |
Указатель на главное окно программы. | ||||||||
uID |
UINT |
Идентификатор иконки. | ||||||||
uFlags |
UINT |
Устанавливаемые флаги:
|
||||||||
uCallbackMessage |
UINT |
Номер сообщения посылаемого иконкой при щелчке на ней мышью. | ||||||||
hIcon |
HICON |
Указатель на используемую иконку. | ||||||||
szTip |
array [0..63] of WideChar |
Подсказка (Hint). |
Пример:
............
uses ShellAPI;
var NID :TNotifyIconData;
............
{Добавление} {Установка
необходимых значений в поля структуры TNotifyIconData} uFlags
:= NIF_ICON OR NIF_TIP OR NIF_MESSAGE; END; end; ............ {Изменение} {Установка
новых значений в поля структуры TNotifyIconData} szTip
:= 'Пример подсказки 1'+#0; END; end; ............ {Удаление
иконки из панели задач} IF
Shell_NotifyIcon(NIM_DELETE,@NID) THEN MessageBeep(0); end; ............ {Процедура
реакции на события передаваемые иконкой} {Проверка
на принадлежность сообщения иконке} WM_RBUTTONUP
: BEGIN GetCursorPos(CursorPos); END; WM_LBUTTONDBLCLK
: ShowMessage('Двойной
щелчок мыши!'); END; end; ............ P.S. Использование
нотификационных иконок в Delphi вызывает некоторые
сложности, так как, необходимо прятать окно и
оставлять на экране только иконку, а простое
использование свойства Visible не дает необходимого
результата. Выход из этого положения видится,
только, в отказе от использования объекта TApplication
и работе с функциями API напрямую. Данный подход
хорош еще и тем, что эти программы постоянно
находятся в памяти, а использование в них
объектно-ориентированной библиотеки Delphi будет
отнимать слишком много ресурсов.
procedure TForm1.bAddClick(Sender: TObject);
begin
WITH NID DO BEGIN
cbSize := SizeOf(NID);
uID := 123;
Wnd := Handle;
szTip := 'Пример подсказки'+#0;
hIcon := Application.Icon.Handle;
uCallBackMessage := WM_USER+10;
{Добавление иконки в панель
задач}
IF Shell_NotifyIcon(NIM_ADD,@NID) THEN MessageBeep(0);
procedure TForm1.bModifyClick(Sender: TObject);
begin
WITH NID DO BEGIN
hIcon := LoadIcon(0,IDI_ASTERISK);
{Изменение иконки в панели
задач}
IF Shell_NotifyIcon(NIM_MODIFY,@NID) THEN MessageBeep(0);
procedure TForm1.bDeleteClick(Sender: TObject);
begin
procedure TForm1.WndProc(var M: TMessage);
var CursorPos: TPoint;
begin
IF M.Msg = WM_USER+10 THEN
{Реакция на необходимые
события}
CASE M.LParam OF
PopupMenu1.Popup(CursorPos.X, CursorPos.Y);
{Передача необработанных
сообщений дальше}
INHERITED WndProc(M);
...предыдущая страница следующая...
оглавление