Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблемы с Shell_notifyicon

34K
22 января 2008 года
aspenleaf
4 / / 22.01.2008
Я просто измучился и не знаю что делать! Стандартная работа с Shell_NotifyIcon не вызывала проблем, но вот я захотел вместо szTip[64] перейти к szTip[128], делаю примерно как в MSDN - ничего не получается!:



Код:
NOTIFYICONDATA NotIconD = {0};
    NotIconD.cbSize = sizeof(NOTIFYICONDATA);
    NotIconD.hWnd = hMainWnd;
    NotIconD.uID = 1;
    Shell_NotifyIcon(NIM_ADD, &NotIconD);
    NotIconD.uVersion = NOTIFYICON_VERSION;
    BOOL big_tip = Shell_NotifyIcon(NIM_SETVERSION, &NotIconD); // = 1, т.е. версия изменена!
    wcscpy_s(NotIconD.szTip, 128, L"120 знаков..."); // И однако присходит обрезка до 63 знаков!
    NotIconD.uFlags = NIF_ICON | NIF_TIP;
    NotIconD.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(WPC));
    Shell_NotifyIcon(NIM_MODIFY, &NotIconD);


ставлю breakpoint, проверяю, действительно: WCHAR szTip[128]
Для очистки совести пробую добавить


 
Код:
#define _WIN32_IE 0x0500




или меняю на

 
Код:
NotIconD.cbSize = sizeof(NOTIFYICONDATA_V1_SIZE);


- всё глухо. Такое чувство, что у меня Systray от Win98 :-), притом что сама ось XP SP2! И других прог есть balloon! Компилятор VC9. Подскажите, где ошибка?!!!

А Balloon ToolTip вообще никак не работает, не всплывает, и всё тут...

Код:
NOTIFYICONDATA NotIconD = {0};
    NotIconD.cbSize = sizeof(NOTIFYICONDATA);
    NotIconD.hWnd = hMainWnd;
    NotIconD.uID = 1;
    Shell_NotifyIcon(NIM_ADD, &NotIconD);

    NotIconD.uFlags = NIF_ICON | NIF_INFO;
    wcscpy_s(NotIconD.szInfoTitle, 64, L"Bla-Bla-Bla");
    wcscpy_s(NotIconD.szInfo, 256, L"Bla-Bla");
    NotIconD.dwInfoFlags = NIIF_INFO;
    NotIconD.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(WPC));
    NotIconD.uTimeout = 10000;
    Shell_NotifyIcon(NIM_MODIFY, &NotIconD);


С надеждой на помощь, Сергей.
1.8K
23 января 2008 года
_const_
229 / / 26.11.2003
Цитата: aspenleaf

 
Код:
#define _WIN32_IE 0x0500

С надеждой на помощь, Сергей.



А куда ты это вставляешь? Попробуй проверить значение _WIN32_IE непосредственно перед объявлением переменной NOTIFYICONDATA.

34K
23 января 2008 года
aspenleaf
4 / / 22.01.2008
Цитата: _const_
А куда ты это вставляешь? Попробуй проверить значение _WIN32_IE непосредственно перед объявлением переменной NOTIFYICONDATA.


Куда я только это не вставлял, и в каких комбинациях:)
И перед

 
Код:
#include <windows.h>

и перед объявлением переменной NOTIFYICONDATA, по типу
 
Код:
#undef _WIN32_IE
#define _WIN32_IE 0x0600

Проверка показывает, что по умолчанию он дефайнится в
 
Код:
#define _WIN32_IE       0x0700

Может проблема в новом WinSDK?

Если не очень трудно, можно глянуть код и экзешник?
Там если в подсказке будет 3 строки - значит пашет, 2 - обрывает!
1.8K
24 января 2008 года
_const_
229 / / 26.11.2003
Вставляй перед
#include "example.h"
34K
24 января 2008 года
aspenleaf
4 / / 22.01.2008
Всё, спасибо, проблема решена, оказывается нужно было добавить
 
Код:
#define _WIN32_WINNT 0x0501

И причём тут _WIN32_IE, я не знаю; очень хочется недобро сказать про сотрудников MS, которые писали статью в MSDN про Shell_NotifyIcon
1.8K
25 января 2008 года
_const_
229 / / 26.11.2003
_WIN32_IE как раз понятно при чем. В MSDN четко сказано:
For Version 5.0 and later, szTip can have a maximum of 128 characters, including the terminating NULL.
А это как раз и задается _WIN32_IE. А вот при чем здесь _WIN32_NT действительно непонятно. Кстати, у меня при задании последнего твой пример не скомпилился на VC8.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог