Я пытаюсь использовать listbox.Addstring();
в приложении MFC, которое будет принимать LPCTSTR
,
Я передаю переменную char
массив длиной 33 символа.
ListBox.AddString(Adapter_List->pScanList->network[0].szSsid);
SzSsid
объявлен как char szSsid[33];
Я сталкиваюсь с двумя проблемами:
1) если я приведу LPCTSTR
лайк
ListBox.AddString( (LPCTSTR ) Adapter_List->pScanList->network[0].szSsid );
Я не получаю правильный вывод — отображаются некоторые китайские иероглифы. Я знаю, что это какая-то проблема с Unicode, но я не разбираюсь в Unicode.
2) если я не приведу тип, я получаю сообщение об ошибке
Невозможно преобразовать char [33] в LPCTSTR
Я пытаюсь создать приложение MFC, которое будет отображать все точки доступа. В szSsid
Я могу видеть имена точек доступа.
LPCTSTR
приведение типов просто неправильно. Вы можете использовать ATL конвертер помощников лайк CA2T
конвертировать из char
строка в TCHAR
(LPCTSTR
) строка или CA2W
конвертировать из char
строка в Unicode UTF-16 wchar_t
строка; например.:
// CA2T - Uses the TCHAR model (obsolete)
ListBox.AddString( CA2T(Adapter_List->pScanList->network[0].szSsid) );
или же:
// CA2W - Conversion to Unicode UTF-16 (wchar_t) string
// More modern approach.
ListBox.AddString( CA2W(Adapter_List->pScanList->network[0].szSsid) );
Но, что более важно, что такое кодирование используется вашим char szSSid[]
строка? Вы можете указать этот кодирующий идентификатор (например, CP_UTF8
для струн UTF-8) в CA2W
конструктор nCodePage
параметр для правильного преобразования в Unicode UTF-16 строка передается AddString()
метод.
Других решений пока нет …