Clipboard & CF_LOCALE
От: IPv6 Россия http://www.lumarnia.com/
Дата: 17.09.02 08:57
Оценка:
Здравствуйте All !
Никто не подскажет, как пользоваться при "укладке" текста в клипбоард вышеозначенным форматом (CF_LOCALE). Проблема в том что мне надо в своей программе класть в клипбоард русский текст. а при вставке этого текста например в Word выходят нерусские буквы — тот же текст в другой кодировке (не Cyr). в мсдне прочитал что винды сами разбираются с кодировкой текста который запихивается CF_TEXTом, но для контроля этого автоматического процесса можно применить CF_LOCALE. Смелые эксперименты успехом не увенчались. В общем если кто сталкивался — помогите.

P.C. я так понимаю что еще можно текст пихать в CF_UNICODE но после использования этого формата он (тескт) вообще никуда не вставляется возможно я что-то не так делаю
Re: Clipboard & CF_LOCALE
От: Patalog Россия  
Дата: 17.09.02 11:04
Оценка: 10 (2) +1
Здравствуйте IPv6, Вы писали:

IP>Здравствуйте All !

IP>Никто не подскажет, как пользоваться при "укладке" текста в клипбоард вышеозначенным форматом (CF_LOCALE). Проблема в том что мне надо в своей программе класть в клипбоард русский текст. а при вставке этого текста например в Word выходят нерусские буквы — тот же текст в другой кодировке (не Cyr). в мсдне прочитал что винды сами разбираются с кодировкой текста который запихивается CF_TEXTом, но для контроля этого автоматического процесса можно применить CF_LOCALE. Смелые эксперименты успехом не увенчались. В общем если кто сталкивался — помогите.

IP>P.C. я так понимаю что еще можно текст пихать в CF_UNICODE но после использования этого формата он (тескт) вообще никуда не вставляется возможно я что-то не так делаю


BOOL res = OpenClipboard();
if(res) {
    EmptyClipboard();
    char* clip_data = reinterpret_cast<char*>(GlobalAlloc(GMEM_FIXED, MAX_PATH));
    lstrcpy(clip_data, "Мой супер-пупер текст");
    SetClipboardData(CF_TEXT, reinterpret_cast<HANDLE>(clip_data));

    LCID* lcid = reinterpret_cast<DWORD*>(GlobalAlloc(GMEM_FIXED, sizeof(DWORD)));
    *lcid = MAKELCID(MAKELANGID(LANG_RUSSIAN, SUBLANG_NEUTRAL), SORT_DEFAULT);
    SetClipboardData(CF_LOCALE, reinterpret_cast<HANDLE>(lcid));

    CloseClipboard();
}

Вроде вполне себе работает... Особенно с LANG_CHINESE понравилось...
Почетный кавалер ордена Совка.
http://rsdn.org/tools/member.aspx?id=Patalog
Re[2]: Clipboard & CF_LOCALE
От: IPv6 Россия http://www.lumarnia.com/
Дата: 18.09.02 16:26
Оценка:
Здравствуйте Patalog, Вы писали:

P>Вроде вполне себе работает... Особенно с LANG_CHINESE понравилось...

Спасибо!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.