Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Почему символ "ё" <Alt + 0235> меняется на "е"


Автор: Sniper_super 5.5.2009, 17:34
Создаю экземпляр класса CRichEditCtrl, запихиваю в этот RichEdit символ "ё" <Alt + 0235> и после GetSelText() извлекается символ "е", а не "ё". В чем проблемма?

Автор: Peter 6.5.2009, 11:43
Я попробовал то же самое сделать на этом сайте. Именно: в строке "Поиск" (где по умолчанию сидит подсказка "Введите слово") ввел <Alt + 0235>, выделил эту букву и вставил в Far Manager. Там вставилась латинская буква "e" (код 101). В редакторе AkelPad то же самое действие выдало крючок. В OpenOffice Writer, а также здесь в поле для ответа на сообщение вставляется "ё".
Особенности Windows, как я понял.

Автор: Sniper_super 6.5.2009, 17:18
Цитата

Особенности Windows, как я понял. 


Возможно, но как это обойти??? Ведь можно!

Автор: Rififi 6.5.2009, 21:50
её вроде хотят убрать из алфавита, может с этим как-то связано...?

Автор: Peter 7.5.2009, 09:55
Цитата(Sniper_super @  6.5.2009,  17:18 Найти цитируемый пост)
Возможно, но как это обойти??? Ведь можно!

Наверное, работать с Unicode.

Добавлено через 4 минуты и 45 секунд
В файле Include\mfc\afxcmn.h записан комментарий:
Цитата
// richedit EM_GETSELTEXT is ANSI

Автор: Peter 7.5.2009, 10:13
Да, пишешь в запросе поисковика: "RichEdit Unicode" и изучаешь.

Автор: math64 7.5.2009, 13:11
Вы вводите не русскую ё, а латинскую e с умляутом. Если не используется уникод, умляут отбрасывается.

Автор: Sniper_super 7.5.2009, 17:13
Цитата

Вы вводите не русскую ё, а латинскую e с умляутом. Если не используется уникод, умляут отбрасывается. 


Пробовал
Код

    TCHAR * pszText = new TCHAR[100];
    GETTEXTEX * sGetText = new GETTEXTEX();
    sGetText->cb = sizeof(pszText);
    sGetText->flags = GT_DEFAULT;
    sGetText->codepage = 1200; //Unicode
    sGetText->lpDefaultChar = NULL;
    sGetText->lpUsedDefChar = NULL;
    ::SendMessage( m_ctrlText.m_hWnd, EM_GETTEXTEX, (WPARAM)sGetText, (LPARAM)pszText );


Когда в RichEdit буква ё тогда в pszText у меня символ " -21"л" ". Или чото не так делаю?

Автор: Peter 16.5.2009, 12:33
Тут вопрос еще, как определен TCHAR. В зависимости от макроопределений, это может быть char либо wchar_t. Не лучше ли явно писать wchar_t?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)