ОС - Windows XP SP3
IDE - Lazarus 0.9.28.2 бета + winCE
Господа... Может кто-нить поможет, разъяснит :
Добавляю иконку в трей, код стандартный :
ico:=TIcon.Create;
ico.LoadFromFile(SelfPath+'\icon16x16x8.ico');
with TrayIconData do begin
cbSize := SizeOf(TrayIconData);
uID := 0;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage := WM_ICONTRAY;
hIcon := ico.Handle;
StrPCopy(szTip, Application.Title);
end;
TrayIconData.Wnd := Handle;
windows.Shell_NotifyIcon(NIM_ADD, NOTIFYICONDATA(@TrayIconData))
Под Win32 компилируется и запускается без проблем.
Под WinCE - компиляция останавливается с ошибкой - Identifier not found - кричит, что не знает что-такое NIF_MESSAGE, NIF_ICON, NIF_TIP и NIM_ADD...
Как такое вообще может быть? На сколько я понимаю : NIF_MESSAGE, NIF_ICON, NIF_TIP, NIM_ADD и прочие NIM-ы и NIF-ы - это стандартные ShellApi сообщения...
Пробовал под Win32 делать ShowMessage(inttostr(NIF_MESSAGE)) и подставлять потом вместо словесных "NIF_MESSAGE", "NIF_ICON", "NIF_TIP", "NIM_ADD" их DWORD-ы. В итоге - под Win32 - скомпилировалось и запустилось без проблем - под WinCE скомпилировалось, но никакого эффекта - иконка не появилась...
Пробовал TTrayIcon - под WinCE - не срабатывает...
WinCE - иконка в трее
Модератор: Модераторы
-
FreeBSD-ier
- незнакомец
- Сообщения: 5
- Зарегистрирован: 10.12.2010 09:54:54
TTrayIcon
Данный виджет для WinCE не реализован!
по крайней мере в 0.9.29 rev 25451
Добавлено спустя 1 минуту 35 секунд:
http://www.vestace.ru/Default.aspx?tabid=58&ctl=Details&mid=371&ItemID=47
Добавлено спустя 19 минут 57 секунд:
Добавляем себе следующее:
Ну и функция Shell_NotifyIcon определена не правильно.
Данный виджет для WinCE не реализован!
по крайней мере в 0.9.29 rev 25451
Добавлено спустя 1 минуту 35 секунд:
http://www.vestace.ru/Default.aspx?tabid=58&ctl=Details&mid=371&ItemID=47
Добавлено спустя 19 минут 57 секунд:
Добавляем себе следующее:
Код: Выделить всё
const
NIM_ADD = 0;
NIM_MODIFY = 1;
NIM_DELETE = 2;
NIF_MESSAGE = 1;
NIF_ICON = 2;
NIF_TIP = 4;
Ну и функция Shell_NotifyIcon определена не правильно.
Код: Выделить всё
type
_NOTIFYICONDATAW = record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..63] of WideChar;
end;
PNOTIFYICONDATAW = ^_NOTIFYICONDATAW;
function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNOTIFYICONDATAW): WINBOOL; external 'coredll.dll' name 'Shell_NotifyIcon';
