Установка поля 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");
Другие вопросы по тегам