Использую ComboboxEx и добавляю текст в каждый элемент списка в стековый массив pszData в WM_INITDIALOG.
//
var
pszData: Array of WideString;
//
SetLength(pszData, iItem + 1);
pszData[iItem] := hData.cFileName;
SendMessageW(GetDlgItem(hWnd, IDC_LANG_LIST), CB_SETITEMDATA, iItem,
LPARAM(pszData[iItem]));
На семёрке этот код возвращает ересь в WM_CLOSE:
var
dwRet : Integer;
pszText: WideString;
//
dwRet := SendMessageW(GetDlgItem(hWnd, IDC_LANG_LIST), CB_GETCURSEL,
0, 0);
if (dwRet <> CB_ERR) then
begin
pszText := LPWSTR(SendMessageW(GetDlgItem(hWnd, IDC_LANG_LIST),
CB_GETITEMDATA, dwRet, 0));
end;
Неужто надо объявить этот массив глобальным? Не хочу лишних глобальных переменных, тем более под 2000 и XP корректно извлекается текст с каждого элемента. Рассматриваю как вариант SetWindowLongPtrW + GWL_USERDATA для массива, должно сработать. Что можно придумать?