Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с буфером обмена, точнее: с текстом в буфере 
:(
    Опции темы
kof
Дата 11.12.2005, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 13.8.2005
Где: Украина, Донецк

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



Люди, подскажите варианты ответов, вопрос упёрся ребром.
---
Дело такое:
пишу прогу, в которой собственно и беру текст из файла и вставляю в буфер обмена. Все вроде бы просто.

Сложность в том, что при вставки в буфер обмена русского(!!!) текста, то из буфера выходит только чушь. Пытаюсь получившееся вставить в 'Блокнот' и... белиберда! Такое же и с 'Вордом' Но в редакторе AkelPad нормально! И (если кто знает) в Total Commander`e (по старому - Windows Commander) внизу в коммандной строке тоже нормально воспринимает...

Программа под MFC.

Привожу код программы:
Код

CString str="Текст из файла"; //создание переменной str в которую загружаю текст из файла
// ...(загрузка текста в str)...
OpenClipboard(); //открываю буфер
EmptyClipboard(); //очищаю буфер

HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, str.GetLength()+1); //создаю переменную типа HGLOBAL и выделяю память под неё

strcpy((char *)GlobalLock(hGlobal), str); //копирую в hGlobal строку str
GlobalUnlock(hGlobal);

SetClipboardData(CF_TEXT,hGlobal); //помещаю в буфер текст содержащийся в hGlobal
CloseClipboard(); //закрываю буфер
exit(0); //выхожу


Буду рад любым советам, подсказкам и помощи.

Вот что в итоге оказывается в буфере:

Ýòî ïðîñòî ðóññêèé òåêñò.
Ñúåøü ýòèõ ïðåêðàñíûõ ÿáëîê, äà âûïåé æå ÷àþ.
PM MAIL WWW   Вверх
Earnest
Дата 12.12.2005, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Программно с этим не сталкивалась, но сталкивалась на уровне UI, при копировании текста из одной программы в другую. При запоминании в буфер обмена в программе-источнике должен быть установлен русский язык...


--------------------
...
PM   Вверх
SeregaLBN
Дата 13.12.2005, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Попробуй локаль в проекте изменить на русский
PM MAIL   Вверх
JoyEx
Дата 13.12.2005, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 5
Всего: 12



Цитата(kof @ 11.12.2005, 20:50)
Сложность в том, что при вставки в буфер обмена русского(!!!) текста, то из буфера выходит только чушь


Unicode спасёт
CF_UNICODETEXT

Это сообщение отредактировал(а) JoyEx - 13.12.2005, 20:13


--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
kof
Дата 17.12.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 13.8.2005
Где: Украина, Донецк

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



Цитата
JoyEx
Unicode спасёт
CF_UNICODETEXT

Нет. Не спасает. Ты сам(а) попробуй.

Да и локализация проекта Русская.

Резонный вопрос по поводу ответа Earnest:
Как програмно изменить локализацию на машине на Русскую?
тоесть setlocale(LC_ALL,str); здесь не спасает... пробовал...

Это сообщение отредактировал(а) kof - 17.12.2005, 16:49
PM MAIL WWW   Вверх
JoyEx
Дата 17.12.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 5
Всего: 12



Цитата(kof @ 17.12.2005, 16:46)
Цитата
JoyEx
Unicode спасёт
CF_UNICODETEXT


Нет. Не спасает. Ты сам(а) попробуй.


Так ты сам отбиваешь охоту тебе помогать.
Если бы я не знал, что говорю, то тогда бы и не советовал.



--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
kof
Дата 18.12.2005, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 13.8.2005
Где: Украина, Донецк

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



JoyEx, я пробовал CF_UNICODETEXT вставлять в буфер, вот что на выходе:
ⴭⴭⴭ਍⃮ïമ켊മⴊⴭⴭ


Если же использовать CF_TEXT то результат такой:
------
Ýòî ïðîñòî òåêñò.
Ïðîñòîé òåêñò.
------

Изначальный текст:
------
Это просто текст.
Простой текст.
------

Так, что мои ответы обоснованы.
PM MAIL WWW   Вверх
JoyEx
Дата 18.12.2005, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 5
Всего: 12



Посмотри в Spy++, например, окно Блокнота и увидишь, что оно Unicode. Поэтому я и советую CF_UNICODETEXT.
$M не любит символы больше 0x80, в отладчиках и дизассемблерах эти символы обычно выводят точками smile



--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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