Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];

Вниз

Помогите, <b>PLEASE</b>   Найти похожие ветки 

 
Goblinus   (2002-07-03 17:08) [0]

Доброго всем времени суток! Подскажите, ПЛЗ, как создать TrayIcon без использования компонентов (прога - выдвигалка сидюка - пишется на чистом Win API). Причём чтобы при этом картинка содержалась в приложении, а не загружалась извне. И сразу уж - как туда менюшку добавить (на Win API не писал до этого вообще :-((( )


 
asmer (faq)   (2002-07-03 17:34) [1]

Q4: Как добавить иконку на Tray ?
A4: Для работы с SystemTray существует всего одна функция. Вот ее
Си-прототип:
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
DWORD dwMessage, // message identifier
PNOTIFYICONDATA pnid // pointer to structure
);
Эта функция описана в заголовочном файле Win32-SDK "shellapi.h",
включаемом в программу при включении "windows.h". Параметр
dwMessage может принимать одно из трех значений: NIM_ADD,
NIM_DELETE, NIM_MODIFY. Для добавления иконки он должен быть
установлен в NIM_ADD.
Параметр pnid имеет тип PNOTIFYDATA, который описан как:
typedef struct _NOTIFYICONDATA { // nid
DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
char szTip[64];
} NOTIFYICONDATA, *PNOTIFYICONDATA;
Поля структуры NOTIFYICONDATA имеют следующий смысл:
cbSize - размер структуры, должен быть
sizeof(NOTIFYICONDATA).
hWnd - дескриптор окна, которое будет получать события
мыши над иконкой.
uID - уникальный идентификатор иконки. Идентификатор
должен быть уникален в пределах окна - обрабо-
тчика, передаваемого в hWnd.
uFlags - битовое поле, определяющее какое из следующих
полей несет действительную информацию.
Может быть одним из следующих значений: NIF_ICON,
NIF_MESSAGE, NIF_TIP или их OR-комбинацией.
uCallbackMessage - сообщение, передаваемое окну - обработчику при
событиях мыши. Желательно получать номер
сообщения вызовом RegisterWindowMessage(),
но допускаются и значения WM_USER+N, где N > 0.
hIcon - дескриптор иконки, помещаемой на Tray.
szTip - текст для ToolTip"а, если szTip[0] = 0x00, то
ToolTip"а не будет.
Таким образом, для добавления иконки на Tray необходимо
заполнить экземпляр структуры NOTIFYICONDATA и вызвать функцию
Shell_NotifyIcon() с параметром NIM_ADD и указателем на
заполненный экземпляр структуры.
При добавлении иконки необходимо заполнить поля cbSize, hWnd,
uID, uFlags, uCallbackMessage, hIcon. Поле szTip можно оставить
пустым, если вам не нужен ToolTip. Поле uFlags должно содержать
как минимум NIF_MESSAGE | NIF_ICON.
===================
Q8: Многие программы показывают Pop-Up меню при щелчке на их иконке,
помещенной на Tray, как этого добиться ?
A8: Вы должны обрабатывать сообщение, указанное вами при добавлении
иконки на Tray. При значении (UINT)lParam, равном WM_RBUTTONDOWN
(это обычно дял Pop-Up меню по правой кнопке), или любому другому
необходимому вам, вы должны вызовом функции GetCursorPos()
получить позицию курсора в момент события (вряд ли пользователь
успеет убрать мышь за время обработки сообщения, особенно если
он ожидает меню), получить вескриптор Pop-Up меню одним из многих
способов (LoadMenu(), GetSubMenu(), CreateMenu(), и т.д.) и
выполнить следующий код:

SetForegroundWindow(hWnd);
TrackPopupMenuEx(hMenu,TPM_HORIZONTAL|TPM_LEFTALIGN,x, y,hWnd,
NULL);
DestroyMenu(hMenu);
PostMessage(hWnd,WM_USER,0,0);

где hWnd - дескриптор окна, которое будет обрабатывать команду
меню, hMenu - дескриптор меню, x и y - позиция курсора. Для
подробностей смотрите Win32 SDK Help по функции TrackPopupMenuEx.


 
Goblinus   (2002-07-03 17:36) [2]

Большое спасибо!


 
Raptor   (2002-07-03 22:30) [3]

А еще можно в FAQ на этом сайте заглянуть. ж-))



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
3-13883
kinder
2002-08-14 11:03
2002.09.05
Выпадающий список в DBGrid


1-14065
Lamer86
2002-08-26 20:12
2002.09.05
Иконки в exe шниках


1-14056
Ahmad
2002-08-27 02:29
2002.09.05
НУЖНО ПРИСОБАЧИТЬ СВОЙСТВО Alignment TEdit у


14-14264
alexsandri
2002-08-11 12:14
2002.09.05
пожалуйста подкиньте шаблон резидента


6-14195
Карлсон
2002-06-26 14:11
2002.09.05
Помогите с отловом траффика!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский