![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Guest_Knave |
|
|||
|
Unregistered |
Есть текстовые свойства, хранятся в строках wchar_t в 2-х байтном формате. Проблема в том что при использовании объекта в VB русские буквы в даннх заменяются левыми символами, если использовать в С++ то все нормално. Если компилировать в юникод то в VB все нормально, а в C++ наоборот нет. Пробовал setlocale и _wsetlocale - приводит к аварийному завершению. setlocale использовал так setlocale(SC_ALL, "russian") Загрузка свойства значением производится так: // Компилируется не в юникод long len; ... if (m_lpRemoteName!=NULL) free(m_lpRemoteName); len=strlen(m_nrList[m_dwCurItem].lpRemoteName); // Тип LPTSTR m_lpRemoteName=(BSTR)malloc(len*sizeof(wchar_t)+2); // указатель на строку с данными свойства. Доступно свойство только на чтение mbstowcs(m_lpRemoteName, m_nrList[m_dwCurItem].lpRemoteName, len+1); Выдача значения свойства так: STDMETHODIMP CKnNREnum::get_RemoteName(BSTR *pVal) { *pVal=::SysAllocString(m_lpRemoteName); return S_OK; } Дополнительный вопрос - почему в VB значения свойства нормально возвращается так *pVal=::SysAllocString(m_lpRemoteName); а так происходит ошибка *pVal=m_lpRemoteName |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |