Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как заставить CEdit реагировать на ' ' ? https://www.cyberforum.ru/ cpp-beginners/ thread484112.html
Cstring x('haha ha'); CEdit Edit; Edit.SetWindowText(x) - не реагирует на Cstring x('haha ha'); Edit.SetWindowText(x) - реагирует на
C++ Где взять последнюю версию Dundas Ultimate Toolbox?
Господа, может кто будет столь любезен подсказать где взять последнюю версию Dundas Ultimate Toolbox
Как можно записать строку в конец файла, чтобы данные которые были в нем не стерлись? C++
Подскажит, как на С++ можно записать строку в конец файла, чтобы данные которые были в нем не стерлись?
C++ SetMenuItemInfo & SysTray Такая вот забавная проблема. Пишу приложение(не MFC) в котором использую SysTray. Пытаюсь сделать так, чтобы при выборе конкретного пункта меню из трея он становился MF_GRAYED, а тот пункт, который... https://www.cyberforum.ru/ cpp-beginners/ thread483970.html
C++ Доступные COM порты https://www.cyberforum.ru/ cpp-beginners/ thread483963.html
Добрый день. Не подскажите как сделать Browsing доступных COM портов на компе? Спасибо.
Как убрать сообщение из очереди сообщений Windows. C++
Я поставил ловушку(SetWindowsHookEx) на все сообщения Windows. И у меня возникла такая проблема: я захотел удалить пару сообщений из очереди Windows, использовал фуннкции GetMessage и PeekMessage....
Ошибка в функции FillList в строке CInfo Info C++
Народ нужна помощь! class CInfo { CString x; CString y; }; void CMyClass::FillList(CString xx, CString yy) // Пихаю в ListCtrl { LVITEM Item;
C++ Как получить Item в CListCtrl? A Kak mne poluchit' Item v CListCtrl??? Cheta ya tuplyu sovsem... niche ne vihodit https://www.cyberforum.ru/ cpp-beginners/ thread483717.html
C++ Внедрение кнопки в тулбар https://www.cyberforum.ru/ cpp-beginners/ thread483693.html
Всем привет. Опишите ,плз, (или поскажите ссылку) технологию динамического внедрения кнопки запуска одной проги в тулбар другой проги. Например , при установке ICQ - в тулбаре Интернет Експлорера...
C++ DLL VC++, права доступа на запись и удаление файлов Есть DLL, написанная на VC++. Она занимается тем, что удаляет, создает .txt-файлы и пишет лог в .txt-файл, а также переписывает таблицы в SQL-базе. Метод этой DLL, который этим занимается вызывается... https://www.cyberforum.ru/ cpp-beginners/ thread483558.html
Visual_Craft
0

Строковые типы в ATL. Очень странная фича!!!, самопроизвольно BSTR -> LPCTSTR

22.04.2010, 20:36. Просмотров 822. Ответов 0
Метки (Все метки)

Работаю VC++ 6.0, Два приложения ATL сервер и MFC OLE контейнер

В сервере в классе ATL метод
idl)
C++
1
[id(2), helpstring('method ATLMessageBSTR')] HRESULT ATLMessageBSTR([in] BSTR olestr);
h)
C++
1
STDMETHOD(ATLMessageBSTR)(BSTR olestr);
cpp)
C++
1
2
3
STDMETHODIMP CATLTest::ATLMessageBSTR(BSTR olestr)
{char chars[256]; wcstombs((CHAR*)&chars,(OLECHAR*)&olestr,sizeof(chars));
MessageBox(0,chars,'Probe',0); return S_OK;}
В клиенте из TLB генерится следующий код
h)
C++
1
void ATLMessageBSTR(LPCTSTR olestr);
cpp)
C++
1
2
void IATLTest::ATLMessageBSTR(LPCTSTR olestr){static BYTE parms[] =VTS_BSTR;
InvokeHelper(0x2, DISPATCH_METHOD, VT_EMPTY, NULL, parms, olestr);}
Вызов метода
C++
1
2
3
char chars[20]; strcpy(chars,'This is CHAR STR');
IATLTest atlcl; atlcl.CreateDispatch('ATLServer.ATLTest.1'); 
atlcl.ATLMessageBSTR(chars);
Обратите внимание был объявлен тип BSTR(т.к. другие строковые типы не компиляцца, ибо недопустимы по соглашениям ATL, см.документацию), а посылаю ему (char *) т.к. если туда сунуть что либо другое, будет ошибка компиляции.

Почему BSTR превратился в LPCTSTR?
Кто-нибудь объяснит популярно в чем философский смысл такого странного преобразования?

И ни одного предупреждения, ни ошибок.
Вызов метода работает, выскакивает вызываемое ATL-окно, но строка не передается и не отображается, точнее неправильно передается. Попробовал передавать как указатель long *, Отображаются только первые 4 буквы. Все скомпилировано в режиме Debug (не UNICODE)

Ну ничего не понимаю. Как строковые параметры передавать? Да и указатели на структуры тоже непонятно как передавать.

Вернуться к обсуждению:
Строковые типы в ATL. Очень странная фича!!!, самопроизвольно BSTR -> LPCTSTR
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2010, 20:36
Готовые ответы и решения:

Стоит ли в C++ Builder применять такие типы как TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR
Здравствуйте. Стоит ли в C++ Builder применять такие типы как TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR...

Странная ошибка при компиляции очень очень большой проги ,,boomerang,,
Я в общем, даже и не представляю, куда смотреть в поисках ошибки. Ошибка 1 error LNK2019: ссылка...

Строки и строковые типы
Дано слово. Определить сколько в нем различных букв

Строковые типы данных
Ввести с клавиатуры строку из 20-ти или меньшего числа символов и найти в строке сумму и количество...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.