|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 3, 2003 17:52:59 Прошу исправить мои ошибки,а то не могу получить подсказку другого вида на иконке в трее. С обычной подсказкой проблем нет. OS Window2k, Explorer 5 Думаю, что ошибка в структуре, писал с ShellAPI.h MSDN NIF_MESSAGE equ 1h NIF_ICON equ 2h NIF_TIP equ 4h NIF_STATE equ 8h NIF_INFO equ 10h NOTIFYICONDATAA STRUCT cbSize DWORD ? hwnd DWORD ? uID DWORD ? uFlags DWORD ? uCallbackMessage DWORD ? hIcon DWORD ? szTip BYTE 128 dup (?) dwState DWORD ? dwStateMask DWORD ? szInfo BYTE 256 dup (?) uTimeout DWORD ? uVersion DWORD ? szInfoTitle BYTE 64 dup (?) dwInfoFlags DWORD ? NOTIFYICONDATAA ENDS AppName db "Имя",0 AppInfo db "Подсказка",0 .if uMsg == WM_CREATE mov note.cbSize,sizeof NOTIFYICONDATA push hWin pop note.hwnd mov note.uID,IDI_TRAY mov note.uFlags,NIF_ICON or NIF_MESSAGE or NIF_TIP or NIF_INFO mov note.uCallbackMessage,WM_SHELLNOTIFY mov eax,hIcon mov note.hIcon,eax mov note.uTimeout,1500 invoke lstrcpy,addr note.szTip,addr AppName invoke lstrcpy,addr note.szInfo,addr AppInfo invoke Shell_NotifyIcon,NIM_ADD,addr note И вопрос по NOTIFYICONDATAA_V1_SIZE , что с ней делать? |
|
|
Дата: Июн 4, 2003 04:36:26 Dust112 szTip BYTE 128 dup (?) szTip BYTE 64 dup (?) mov note.cbSize,sizeof NOTIFYICONDATA mov note.cbSize,sizeof NOTIFYICONDATAA И вопрос по NOTIFYICONDATAA_V1_SIZE, что с ней делать? А это и есть sizeof NOTIFYICONDATA, т.е. устаревшая версия Shell32 (без szInfo, szInfoTitle...) |
|
|
Дата: Июн 4, 2003 05:54:44 Dust112 + Quantum uTimeout и uVersion - это UNION и занимают они один DWORD вместе. Quantum устаревшая версия Я бы сказал, что NOTIFYICONDATAA_V1_SIZE - это размер минимальной/достаточной структуры NOTIFYICONDATA (cbSize + ... + szTip[64]). Dust112 вопрос по NOTIFYICONDATAA_V1_SIZE Посмотрите последние три абзаца из NOTIFYICONDATA Structure. |
|
|
Дата: Июн 4, 2003 23:23:12 Тогда наивный вопрос, как мне записать uTimeout и uVersion в структуре: uTimeout BYTE ? uVersion BYTE ? Спасибо что откликнулись. |
|
|
Дата: Июн 5, 2003 03:14:54 Dust112 как мне записать uTimeout и uVersion . . . szInfo BYTE 256 dup (?) union uTimeout dd ? uVersion dd ? ends szInfoTitle BYTE 64 dup (?) . . . + Там ещё можно добавить guidItem в конец структуры. P2M NOTIFYICONDATAA_V1_SIZE - это размер минимальной/достаточной структуры NOTIFYICONDATA В MSDN ясно написано, что мол "Using this value for cbSize will allow your application to use NOTIFYICONDATA with earlier Shell32.dll versions" |
|
|
Дата: Июн 5, 2003 04:48:48 Quantum В MSDN ясно написано ... Imho это написано после: [code] nid.cbSize = NOTIFYICONDATA_V2_SIZE; [/code] Тем не менее, применительно к NOTIFYICONDATA_V1_SIZE я интерпретирую эту фразу так: "Хотите поддержки NOTIFYICONDATA, используйте как минимум поля с cbSize по szTip[64]" или "Для поддержки NOTIFYICONDATA достаточно использовать структуру с полями с cbSize по szTip[64]". По поводу: Dust112 > szTip BYTE 128 dup (?) Quantum > szTip BYTE 64 dup (?) Не знаю, почему описание структуры NOTIFYICONDATA в online msdn отличается от msdn на CD (2002-JAN) и из shellapi.h (PSDK-NOV-2002). :( [code] // shellapi.h PSDK-NOV-2002 // size: 33'013 байт // date: 19.11.2002 ... #if (_WIN32_IE < 0x0500) CHAR szTip[64]; #else CHAR szTip[128]; #endif ... [/code] Afaik ballon (судя по NIF_INFO и TTF_BALOON) поддерживается, начиная с версии IE 5.00, у меня не получилось отобразить его, если szTip[64], со 128 получилось. |
|
|
Дата: Июн 5, 2003 21:47:14 P2M Imho это написано после: ... Согласен, но это относится и к NOTIFYICONDATA_V1_SIZE. NOTIFYICONDATA_V1 == shell Windows 95 и 98 NOTIFYICONDATA_V2 == shell Windows ME и 2000 + самый последний shell только в XP |
|
|
Дата: Июн 5, 2003 22:00:43 P2M Afaik ballon (судя по NIF_INFO и TTF_BALOON) поддерживается, начиная с версии IE 5.00 NOTIFYICONDATA не связан с comctl32.dll. Поэтому, присутствие последней версии IE не гарантирует поддержки новой оболочки. Запись #if (_WIN32_IE < 0x0500) в shellapi.h следует считать неправильной. |
|
|
Дата: Июн 6, 2003 04:38:36 · Поправил: P2M Quantum NOTIFYICONDATA не связан с comctl32.dll Это как посмотреть. NIF_INFO (для balloon'ов в Tray'е) определен в shellapi.h, а сами ToolTip'ы в commctrl.h. В psdk написано, что установка _WIN32_IE в значение 0x0501 предполагает разработку приложения для Comctl32.dll version 5.81 and later, and Shell32.dll and Shlwapi.dll version 5.0 and later Запись #if (_WIN32_IE < 0x0500) в shellapi.h следует считать неправильной. :( Откуда такая информация? |
|
|
Дата: Июн 6, 2003 05:47:59 · Поправил: Quantum P2M Это как посмотреть Я к тому, что у юзверя может стоять хоть IE6 на древнем пне с Windows 95. Исходя из вашего примера из shellapi.h, на такой машине можно показывать balloon в Tray'е... но это не соответствует действительности (можете проверить); ведь IE не апгрейдит shell, а старый shell из Windows 95 (максимум v4.72) не поддерживает инфу по ballons в NOTIFYICONDATA. Откуда такая информация? Извиняюсь, оказывается WIN32_IE распространяется как на comctl32.dll, так и на shell32.dll. Странные у VC наименования макросов, однако... Ещё раз извиняюсь :( |
|
|
Дата: Июн 6, 2003 09:19:25 Quantum Исходя из вашего примера ... на такой машине можно показывать balloon Ни коим образом. Объявление в программе: [code] #define _WIN32_IE 0x0501 [/code] не более чем уведомление программистом компилятора о желании использовать возможности (функции, константы и т.п.)Comctl32.dll version 5.81 and later, and Shell32.dll and Shlwapi.dll version 5.0 and later. Оно (объявление) не избавляет программиста от необходимости в run-time проверять версии присутствующих dll'ин и принимать решение, что делать, если они (версии) недостаточны. |
|
|
Дата: Июн 6, 2003 16:35:49 Спасибо что столько людей откликнулось, всё заработало, только надо написать szTip BYTE 128 dup (?) Получается вся структуро такова: NOTIFYICONDATAA STRUCT cbSize DWORD ? hwnd DWORD ? uID DWORD ? uFlags DWORD ? uCallbackMessage DWORD ? hIcon DWORD ? szTip BYTE 128 dup (?) dwState DWORD ? dwStateMask DWORD ? szInfo BYTE 256 dup (?) union uTimeout DD ? uVersion DD ? ends szInfoTitle BYTE 64 dup (?) dwInfoFlags DWORD ? NOTIFYICONDATAA ENDS Всё помойму тема закрыта. |
|
|
Дата: Июн 6, 2003 18:44:58 P2M Ни коим образом Спасибо! Я уже понял, что запутался в собственных умозаключениях :( Dust112 Всё помойму тема закрыта. Присоединяюсь |