Установка поля szTip структуры NOTIFYICONDATA
Поле szTip имеет длину 128 символов и кодировку Unicode. Это тип TCHAR, который typedef'd как WCHAR. Так что я понятия не имею, почему следующий фрагмент кода не будет компилироваться.
nid.szTip = _T("ToolTip");
Ошибка компиляции
error C2440: '=' : cannot convert from 'const wchar_t [8]' to 'WCHAR [128]'
Любой совет?
1 ответ
Решение
Ваш код будет работать, если вы назначаете TCHAR*
, Тем не мение, szTip
это не TCHAR*
, объявлено как TCHAR szTip[64]
,
Поэтому вам необходимо скопировать содержимое строки в буфер. Как это:
_tcscpy(nid.szTip, _T("ToolTip"));
Вы действительно должны поддерживать сборки ANSI и Unicode? Если нет, то прекратить использование TCHAR
и переключиться на Unicode. Тогда вы могли бы написать более читаемую версию.
wcscpy(nid.szTip, L"ToolTip");