Здравствуйте Sergey, Вы писали:
S>Здравствуйте Аноним, Вы писали:
А>>в idl файле определена стуктура в которую входит LPTSTR pszText;
А>>при использовании #import клиент видит это поле как LPWSTR pszText;(tlh файл)
А>>в клиенте написан вот такой код
А>>WCHAR pWcharText[256] = _T("Text");
А>>lvc.pszText = pWcharText
А>>потом стуктура передается как параметр функции com сервера
А>>внутри функции оказалось что lvc.pszText содержит только один первый символ
А>>что не правильно при использовании LPTSTR ?
S>Причуды маршаллинга
LPWSTR — просто указатель, маршаллер достаточно умный, чтобы догадаться передать элемент, на который он указывает, но недостаточно умный, чтобы догадаться, сколько там на самом деле символов. Надо использовать BSTR.
Позволю себе не согласиться с таким объяснением. MIDL compiler корректно транспортирует строки по указателям. В том числе в составе структур, нужно лишь построить и зарегистрировать dll заглушки — прокси. Я не пробовал проверять это при исползовании #import, хотя не думаю, чтобы там что-то помешало нормальному ходу процесса.