Я использую Visual Studio 2013 в Windows 10 машин и компиляции 64 бит выиграть 32 приложенияListView_GetItemText врезается
Я заселена контроль списка, как показано ниже:
// got the handle of the list control
HWND m_list = GetDlgItem (hwnddialog, IDC_LIST);
LVITEM x;
//Inserted row items
x.mask = LVIF_TEXT; x.iItem = 0; x.pszText = L"text"; x.state = 0;
x.stateMask = 0, x.iImage =0; x.lParam = 0; x.iSubItem = 0;
ListView_InsertItem(m_list, &x);
// Added column texts ...
ListView_SetItemText(m_list,0,1,"text details");
// etc... The list view shows fine.
//-------------------------Now I am trying to read the text from listview ------
wchar_t tptr[512];
ListView_GetItemText(m_list , 0,0, tptr, 5);
Независимо от значения я вхожу выше пункта, и пп и все, что я обеспечиваю как размер TPtr, (даже если я делаю это локальная или глобальная переменная) в programcrashes после выполнения вышеуказанной линии:
Необработанное исключение в 0x00007F FFC2CAA9AA (comctl32.dll) в sstwinpe64.exe: 0xC000041D: во время обратного вызова пользователя возникло необработанное исключение.
Необходимо разработать это в Win32, так как в WinPE теперь могут запускаться только программы Win32. Что не так в моей программе? Поблагодарив заранее, Basudeb
Что-то странно в вашем коде - вы устанавливаете текст элемента в строку ANSI (простые текстовые данные «без префикса L»), но вы пытаетесь получить строку UNICODE (' wchar_t [] '). Кроме того, как 'ListView_SetItemText()', так и 'ListView_GetItemText()' работают с строками на основе TCHAR, фактические типы которых будут варьироваться в зависимости от макроса препроцессора 'UNICODE'. –
Код выглядит суровым, но он не компилируется из-за несоответствия ANSI/Unicode. Поэтому я думаю, что вы опубликовали поддельный код. Пожалуйста, опубликуйте [mcve], чтобы все сомнения были удалены. Пожалуйста, никогда не спрашивайте о коде, который вы на самом деле не компилировали и не выполняли. –