Загадочное поведение common controls в WinXP
От: uinet  
Дата: 25.02.09 12:18
Оценка:
Столкнулся тут с необычной проблемой, поискал по форумам, ничего подобного не нашел
Имеется WinXP SP2, с американской локацией, но добавленным русским в качестве дополнительного языка ввода. Создаем любое MFCшное диалоговое приложение, вешаем туда editbox. (VS2005, Character Set — Multi-Byte )
Суть проблемы: любой текст, введенный в этот edit на русском, получить невозможно! GetWindowText возвращает набор вопросов на тех местах, где находятся русские символы. Пробовал явно вызывать GetWindowTextW, результат тот же. Возникает только в XP, на подобно настроенной Win2000 все ок.
Причем, если вставить в этот edit русский текст из буфера, а затем вызвать GetWindowText, то все нормально, вернутся русские символы
Может кто знает, как это обойти или есть хотя бы предположения, что тут не так?
Re: Загадочное поведение common controls в WinXP
От: tapatoon  
Дата: 25.02.09 14:36
Оценка:
Здравствуйте, uinet, Вы писали:

U>Может кто знает, как это обойти или есть хотя бы предположения, что тут не так?


можно попробовать в редакторе ресурсов язык диалога поставить русским
Центр ИПсО Сил Специальных Операций
Re[2]: Загадочное поведение common controls в WinXP
От: uinet  
Дата: 05.03.09 21:15
Оценка:
T>можно попробовать в редакторе ресурсов язык диалога поставить русским

К сожалению не помогает
Re: Загадочное поведение common controls в WinXP
От: Аноним  
Дата: 05.03.09 22:04
Оценка:
Здравствуйте, uinet, Вы писали:

U>Может кто знает, как это обойти или есть хотя бы предположения, что тут не так?

Установить по умолчанию кодировку 1251 для неюнкодных программ ?
Re: Загадочное поведение common controls в WinXP
От: Аноним  
Дата: 05.03.09 23:20
Оценка:
Здравствуйте, uinet, Вы писали:

U>Суть проблемы: любой текст, введенный в этот edit на русском, получить невозможно! GetWindowText возвращает набор вопросов на тех местах, где находятся русские символы. Пробовал явно вызывать GetWindowTextW, результат тот же. Возникает только в XP, на подобно настроенной Win2000 все ок.

U>Причем, если вставить в этот edit русский текст из буфера, а затем вызвать GetWindowText, то все нормально, вернутся русские символы
U>Может кто знает, как это обойти или есть хотя бы предположения, что тут не так?

Почему работает при вставке из clipboard объяснить можно тем, что в clipboard могут находитяс множетво форматов текста, в том числе CF_UNICODE, CF_TEXT + CF_LOCALE, т.е. у edit'а есть шанс правильно преобразовать (при необходимости) текст.

Возьмите какой-нить clipboard viewer и посмотрите содержимое clipboard'а при копировании текста из вашего edit'а на Xp и Win2000, и сравните,
также можете посмотреть, что возвращает InternalGetWindowText
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.