PMG

Форумы по созданию игр
Текущее время: 25 сен 2017 03:01

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Кодировка при разработке проекта
СообщениеДобавлено: 29 апр 2010 08:43 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
У меня возникла такая проблема с приводом одних данных к типу других при разработке проекта.
Это проблема конечно из-за малого практического опыта программировании на С++ (я пишу в основном на Delphi, C# в последнее время),
проблемы следующего характера:

Предложим, для примера, я хочу добавить в ComboBox строку, функция:

void Combo_ItemAdd( ULONG ComboID, LPVOID pData, LPCTSTR pStrDesc )
{
HWND hwndCtrl = GetDlgItem( m_hWnd, ComboID );
DWORD dwItem = ComboBox_AddString( hwndCtrl, pStrDesc );
ComboBox_SetItemData( hwndCtrl, dwItem, pData );
}

В качестве передаваемого значения (самого текста) я использую тип LPCTSTR.
При использовании:
.....
D3DADAPTER_IDENTIFIER9 Identifier;
.....
Combo_ItemAdd(IDC_COMBO_ADAPTER, (LPVOID)pAdapter, (LPCTSTR)Identifier.Description);
.....

Параметр Identifier.Description типа char, я его пытаюсь привести к LPCTSTR и заполнить поле в ComboBox`е.
В результате там пишутся квадратики и нули.

Подскажите, как решить такую проблему с переводом из различных типов в другие?

И соответственно возникает вопрос:
по вашему мнению, при разработке проектов (в частности игровых) какой пользоваться кодировкой Unicode или Multi-Byte?
Кодировка устанавливается, если не ошибаюсь "Character Set" изменить с "Use Unicode Character Set" на "Use Multi-Byte Character Set".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка при разработке проекта
СообщениеДобавлено: 29 апр 2010 13:58 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2686
Откуда: Кирово-Чепецк
Лучше UNICODE. Проблема скорее всего в том, что Identifier.Description в формате byte, а надо в unicode. Перевод можно сделать разными методами, но в любом случае через промежуточный буфер.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка при разработке проекта
СообщениеДобавлено: 29 апр 2010 14:04 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
Параметр Identifier.Description типа char. Это точно.
Даже через MessageBox(...) проверил, всё выводится отлично. А вот с переводом проблемка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка при разработке проекта
СообщениеДобавлено: 29 апр 2010 14:37 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2686
Откуда: Кирово-Чепецк
Да в этом дело. Почитай http://www.firststeps.ru/mfc/steps/r.php?179 в принципе там понятно написано...

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка при разработке проекта
СообщениеДобавлено: 29 апр 2010 14:55 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
Ну вариант такой если использовать модуль atlstr.h и класс CString.
Тогда всё работает нормально.
Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка при разработке проекта
СообщениеДобавлено: 01 май 2010 20:02 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2686
Откуда: Кирово-Чепецк
Можно вот так:
Код:
#define W_B(w, a, cb)     WideCharToMultiByte(                              \
                                               CP_ACP,                      \
                                               0,                           \
                                               w,                           \
                                               -1,                          \
                                               a,                           \
                                               cb,                          \
                                               NULL,                        \
                                               NULL)

#define B_W(a, w, cb)     MultiByteToWideChar(                              \
                                               CP_ACP,                      \
                                               0,                           \
                                               a,                           \
                                               -1,                          \
                                               w,                           \
                                               cb)

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка при разработке проекта
СообщениеДобавлено: 04 май 2010 08:16 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
Спасибо, MagicWolf. Попробую.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB