![]() |
|
![]() ![]() ![]() |
|
alya |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.9.2007 Репутация: нет Всего: нет |
Люди, не ругайте меня пожалуйста! Разбиралась с вопросом, долго разбиралась, пришла к точной постоновке задачи и больше нет сил искать в нете... надо срочно. Ответьте, если знаете.
MFC-приложение, студия 2005. Character set проекта - Use Multi-Byte Character Set и должен быть такой. Вопрос: возможно ли в таком проекте работать с Edit-боксом и вводить/выводить из него UNICODE текст? Какого типа переменную к нему привязать? (дальше я этот текст буду конвертить в UTF-8). Спасибо за внимание. |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
CString
![]() -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
alya |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.9.2007 Репутация: нет Всего: нет |
Andrey44, это вы ответили на вопрос, какого типа переменную привязывать к Edit-боксу?
Привязываю. Вычитываю текст из контрола. И выходит что я получила набор символов ASCII, а мне нужно получить набор символов по кодовой странице 1251. Я поняла, что получила не то, что надо, таким образом: посмотрела код символа 'Я', он равен -33. Это неверно. В кодовой таблице CP1251 он равен 223, а по кодовой таблице Unicode ее номер 1073. |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
alya, покажите пожалуйста код , как вы считываете и как потом смотрите что у вас в переменной
-------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
alya |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.9.2007 Репутация: нет Всего: нет |
вот код, как я смотрела что значение в CString в кодовой странице АСКИ:
в отладчике вижу, что с = -33 для буквы Я, c = 70 для буквы F |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
Сделайте SetWindowText(m_str);
![]() Да кстати в юникоде надо использовать TCHAR вместо char Это сообщение отредактировал(а) Andrey44 - 2.11.2007, 18:39 -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
alya |
|
||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.9.2007 Репутация: нет Всего: нет |
Мне надо вычитывать оттуда данные - это на первом месте. А потом работать как с wchar.
спасибо, узнала |
||||
|
|||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
alya, боюсь нерешаема ваша проблема. Все упирается в подгружаемые библиотеки, можно подгрузить либо ту, либо иную версию (юникод/аски), работать одновременно не получится думаю.
Но 100% не уверен, подождите, может кто-нибудь другое мнение имеет на этот счет. Это сообщение отредактировал(а) zkv - 3.11.2007, 13:24 |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
Ну так в m_str у вас и есть все данные
-------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
alya |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.9.2007 Репутация: нет Всего: нет |
zkv, спасибо...
Andrey44, да, есть, но они же в АСКИ... |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
не совсем верно, правильно юзать WCHAR (так как проект MultiByte, то TCHAR будет транслироваться как char) подробнее тут Это сообщение отредактировал(а) zkv - 2.11.2007, 19:00 |
|||
|
||||
Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Конечно имеет. Говориш "работат одновременно не получится", а я скажу если очень хочется то можно. alya, вот код собраный "без уникода" в мульти байте.
m_edit - переменная диалога асоцированая с эдитом. Запускаю прогу в эдит ввожу одну букву "Я", и в дебагере вижу что "c" == 1071. Так что если надо то можно. Это сообщение отредактировал(а) Rapalex - 3.11.2007, 11:54 -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
Rapalex, я посмотрел насчет возможности привязки через DDX - не получилось, а GetWindowText и попробовать не догадался.
Посмотрел, оба варианта (Unicode и MultiByte) в User32.Lib имеются, будем знать. alya, извини за дезинформацию ![]() |
|||
|
||||
alya |
|
||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.9.2007 Репутация: нет Всего: нет |
Rapalex, спасибо! я единственное только заменила
на
и так же во втором случае и всё отлично работает! zkv, я тоже пробовала связать с помощью механизма DDX, но вот странно... в прототипе функции DDX_Text есть тип для привязываемой переменной LPTSTR. Если им воспользоваться, то компилятор говорит ошибка. Ребята! Большое спасибо за помощь!!! |
||||
|
|||||
Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Ну да просто ты собираеш не уникодовское приложение следовательно LPTSTR у тебя это массив CHAR а не WCHAR как тебе надо. Просто каркас написан так чтобы было удобно работать либо в уникоде либо без него. А тебе понадобилось нестандартная работа, это можно просто не стандартными средствами. -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |