Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Работа с буфером обмена |
Автор: kof 11.12.2005, 20:50 | ||
Люди, подскажите варианты ответов, вопрос упёрся ребром. --- Дело такое: пишу прогу, в которой собственно и беру текст из файла и вставляю в буфер обмена. Все вроде бы просто. Сложность в том, что при вставки в буфер обмена русского(!!!) текста, то из буфера выходит только чушь. Пытаюсь получившееся вставить в 'Блокнот' и... белиберда! Такое же и с 'Вордом' Но в редакторе AkelPad нормально! И (если кто знает) в Total Commander`e (по старому - Windows Commander) внизу в коммандной строке тоже нормально воспринимает... Программа под MFC. Привожу код программы:
Буду рад любым советам, подсказкам и помощи. Вот что в итоге оказывается в буфере: Ýòî ïðîñòî ðóññêèé òåêñò. Ñúåøü ýòèõ ïðåêðàñíûõ ÿáëîê, äà âûïåé æå ÷àþ. |
Автор: Earnest 12.12.2005, 09:11 |
Программно с этим не сталкивалась, но сталкивалась на уровне UI, при копировании текста из одной программы в другую. При запоминании в буфер обмена в программе-источнике должен быть установлен русский язык... |
Автор: SeregaLBN 13.12.2005, 20:03 |
Попробуй локаль в проекте изменить на русский |
Автор: JoyEx 13.12.2005, 20:10 | ||
Unicode спасёт CF_UNICODETEXT |
Автор: kof 17.12.2005, 16:46 | ||
Нет. Не спасает. Ты сам(а) попробуй. Да и локализация проекта Русская. Резонный вопрос по поводу ответа Earnest: Как програмно изменить локализацию на машине на Русскую? тоесть setlocale(LC_ALL,str); здесь не спасает... пробовал... |
Автор: JoyEx 17.12.2005, 18:33 | ||
Так ты сам отбиваешь охоту тебе помогать. Если бы я не знал, что говорю, то тогда бы и не советовал. |
Автор: kof 18.12.2005, 17:36 |
JoyEx, я пробовал CF_UNICODETEXT вставлять в буфер, вот что на выходе: ⴭⴭⴭ⃮ïമ켊മⴊⴭⴭ Если же использовать CF_TEXT то результат такой: ------ Ýòî ïðîñòî òåêñò. Ïðîñòîé òåêñò. ------ Изначальный текст: ------ Это просто текст. Простой текст. ------ Так, что мои ответы обоснованы. |
Автор: JoyEx 18.12.2005, 20:30 |
Посмотри в Spy++, например, окно Блокнота и увидишь, что оно Unicode. Поэтому я и советую CF_UNICODETEXT. $M не любит символы больше 0x80, в отладчиках и дизассемблерах эти символы обычно выводят точками ![]() |