2014-07-08 2 views
1

Я работаю над проектом win32 (visual studio 2012). Пользователь может ввести несколько маркеров с их координатами и именами; Теперь я хочу добавить все имена маркеров в список как отдельный элемент; но ниже код, который я не вижу ничего в ListBox:Как добавить несколько элементов в список в Win32 Project C++?

string MarkerNames[10]; 
CMarkerList *Modeless; 

    if (!Modeless) 
     Modeless = new CMarkerList; 

    if (!::IsWindow(Modeless->GetSafeHwnd())) 
     Modeless->Create(IDD_DIALOG2,NULL); 

    Modeless->ShowWindow(SW_SHOW); 
    HWND hdlg = FindWindow(NULL,_T("Dialog")); 


    int index1 = SendDlgItemMessage(hdlg, IDC_LIST2, LB_ADDSTRING, 0, (LPARAM)(MarkerNames[0].c_str())); 

который Немодальный является объектом диалога моего и MarkerNames представляет собой массив, который я сохранил имя маркеров в; , если я вхожу в явную строку, такую ​​как «TEST», она работает, но есть проблема с передачей ей параметра;

В чем проблема и как это исправить?

спасибо вам за вашу помощь :)

ответ

0

Использование _T предполагает, что вы строите программу для набора Unicode символов, который используется по умолчанию. Если это так, вы должны использовать wstring вместо строки.

+0

Я должен использовать функцию GetDlgItemText() для получения текста из элемента управления редактирования в диалоговом окне, и он должен быть в типе TCHAR, и я не могу найти подходящее преобразование для переключения между этими типами; – user3811565

+0

Преобразование не требуется: элементы управления Edit и Listbox используют один и тот же тип текста. Но std :: string работает только для 8-битных символов, а std :: wstring работает только для 16-битных символов. Какой размер TCHAR в вашей программе? (Он изменяется в зависимости от того, создаете ли вы для юникода или нет.) –