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);
Проблемы с Shell_notifyicon
Код:
ставлю 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);
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);
С надеждой на помощь, Сергей.
Цитата: aspenleaf
Код:
#define _WIN32_IE 0x0500
С надеждой на помощь, Сергей.
А куда ты это вставляешь? Попробуй проверить значение _WIN32_IE непосредственно перед объявлением переменной NOTIFYICONDATA.
Цитата: _const_
А куда ты это вставляешь? Попробуй проверить значение _WIN32_IE непосредственно перед объявлением переменной NOTIFYICONDATA.
Куда я только это не вставлял, и в каких комбинациях:)
И перед
Код:
#include <windows.h>
и перед объявлением переменной NOTIFYICONDATA, по типу
Код:
#undef _WIN32_IE
#define _WIN32_IE 0x0600
#define _WIN32_IE 0x0600
Проверка показывает, что по умолчанию он дефайнится в
Код:
#define _WIN32_IE 0x0700
Может проблема в новом WinSDK?
Если не очень трудно, можно глянуть код и экзешник?
Там если в подсказке будет 3 строки - значит пашет, 2 - обрывает!
#include "example.h"
Код:
#define _WIN32_WINNT 0x0501
И причём тут _WIN32_IE, я не знаю; очень хочется недобро сказать про сотрудников MS, которые писали статью в MSDN про Shell_NotifyIcon
For Version 5.0 and later, szTip can have a maximum of 128 characters, including the terminating NULL.
А это как раз и задается _WIN32_IE. А вот при чем здесь _WIN32_NT действительно непонятно. Кстати, у меня при задании последнего твой пример не скомпилился на VC8.