PMG http://forum.pmg.org.ru/ |
|
Кодировка при разработке проекта http://forum.pmg.org.ru/viewtopic.php?f=4&t=7965 |
Страница 1 из 1 |
Автор: | _Dok_ [ 29 апр 2010 08:43 ] |
Заголовок сообщения: | Кодировка при разработке проекта |
У меня возникла такая проблема с приводом одних данных к типу других при разработке проекта. Это проблема конечно из-за малого практического опыта программировании на С++ (я пишу в основном на 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". |
Автор: | MagicWolf [ 29 апр 2010 13:58 ] |
Заголовок сообщения: | Re: Кодировка при разработке проекта |
Лучше UNICODE. Проблема скорее всего в том, что Identifier.Description в формате byte, а надо в unicode. Перевод можно сделать разными методами, но в любом случае через промежуточный буфер. |
Автор: | _Dok_ [ 29 апр 2010 14:04 ] |
Заголовок сообщения: | Re: Кодировка при разработке проекта |
Параметр Identifier.Description типа char. Это точно. Даже через MessageBox(...) проверил, всё выводится отлично. А вот с переводом проблемка. |
Автор: | MagicWolf [ 29 апр 2010 14:37 ] |
Заголовок сообщения: | Re: Кодировка при разработке проекта |
Да в этом дело. Почитай http://www.firststeps.ru/mfc/steps/r.php?179 в принципе там понятно написано... |
Автор: | _Dok_ [ 29 апр 2010 14:55 ] |
Заголовок сообщения: | Re: Кодировка при разработке проекта |
Ну вариант такой если использовать модуль atlstr.h и класс CString. Тогда всё работает нормально. Спасибо. |
Автор: | MagicWolf [ 01 май 2010 20:02 ] |
Заголовок сообщения: | Re: Кодировка при разработке проекта |
Можно вот так: Код: #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) |
Автор: | _Dok_ [ 04 май 2010 08:16 ] |
Заголовок сообщения: | Re: Кодировка при разработке проекта |
Спасибо, MagicWolf. Попробую. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |