Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RichEdit: EM_GETTEXTRANGE, Как взять русский текст? 
:(
    Опции темы
Allest
Дата 7.7.2003, 10:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Посылаю сообщение EM_GETTEXTRANGE, RichEdit возращает текст, в котором русские буквы заменены на "?", с английскими нормально.
А на сообщение EM_GETSELTEXT возвращает пробелы вместо выделенных русских букв.

Почему? Как получить русские?

ps. Можно конечно с помощью EM_STREAMOUT и WM_GETTEXT, но хочется разобраться.

  Вверх
B2_Russia
Дата 9.7.2003, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

Репутация: нет
Всего: 1



Под WinAPI или MFC пишешь?
PM WWW ICQ   Вверх
Allest
Дата 11.7.2003, 15:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











API

RichEdit20A
Visual C++ 6.0
  Вверх
ziga
Дата 31.7.2003, 16:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Handle - handle na RichEdit okno
wsText - nll terminated wchar_t*

set text from UNICODE string:

int lo = SendMessage(Handle, EM_GETLANGOPTIONS, 0, 0);
lo = lo&~IMF_AUTOFONT;
lo = lo&~IMF_AUTOFONTSIZEADJUST;
SendMessage(Handle, EM_SETLANGOPTIONS, 0, lo);
SETTEXTEX stTextEx;
stTextEx.codepage = 1200;
stTextEx.flags = ST_DEFAULT;
SendMessage(Handle, EM_SETTEXTEX, (WPARAM)&stTextEx, (LPARAM)wsText);

get text to UNICODE string:


GETTEXTLENGTHEX gtl;
gtl.flags = GTL_DEFAULT;
gtl.codepage = 1200;
long nCharCount = SendMessage(Handle, EM_GETTEXTLENGTHEX, (WPARAM)&gtl, (LPARAM)0);
if (nCharCount==0) return L"";
wchar_t* buff = new wchar_t[nCharCount+1];
memset(buff, 0, 2*(nCharCount+1));
GETTEXTEX gt;
gt.flags = GT_DEFAULT;
gt.cb = 2*(nCharCount+1);
gt.codepage = 1200;
gt.lpDefaultChar = NULL;
gt.lpUsedDefChar = NULL;
::SendMessage(Handle, EM_GETTEXTEX, (WPARAM)&gt, (LPARAM)buff);
return buff;
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.