Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функции MakeLower / MakeUpper у класса CString, не работет с киртилицей. 
V
    Опции темы
Rapalex
Дата 27.6.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Пишу так:
Код

    CString str = _T("AbC ПривеТ");
    str.MakeLower();
    str.MakeUpper();

Латинские буквы меняются, кирилица нет. Что делать


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Coocky
Дата 27.6.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата(Rapalex @  27.6.2007,  12:22 Найти цитируемый пост)
Что делать

Снимать трусы и бегать, как в дестве говорили smile

MakeLower() —  работает только для текущей локали,т.е. если текущая локаль японская, то русский текст останется без изменений.

CharLower() — она работает независимо от локали.Используй smile

И не забываем говорить спасибо!  smile

Это сообщение отредактировал(а) Coocky - 27.6.2007, 12:45


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Rapalex
Дата 27.6.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Спасибо...   smile 
помогло.

Цитата(Coocky @  27.6.2007,  12:37 Найти цитируемый пост)
работает только для текущей локали

И всётаки, как её поменять?

Добавлено через 15 секунд
Локаль!


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Coocky
Дата 27.6.2007, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата(Rapalex @  27.6.2007,  12:50 Найти цитируемый пост)
И всётаки, как её поменять?

Ща посмотрим.Вообще выбирается изначально, в Визарде smile

Добавлено через 8 минут и 38 секунд
Вот только что создал Корейский проект smile 
Менять можно в настройках проекта ->Resources->General->Culture там все языки. Попробывал поставить русский-не спасло  smile 
Хотя изначально, в визарде, при выборе типа приложения-русского языка нет smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Earnest
Дата 27.6.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Для работы со строками
setlocale (LC_COLLATE, "Russian"");



--------------------
...
PM   Вверх
Rapalex
Дата 16.7.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Цитата(Coocky @  27.6.2007,  12:52 Найти цитируемый пост)
в настройках проекта ->Resources->General->Culture

Не знал, спасибо.
Так какая разница мажду етими настройками, и 
Цитата(Earnest @  27.6.2007,  16:54 Найти цитируемый пост)
setlocale (LC_COLLATE, "Russian"");




--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Rapalex
Дата 3.9.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Щяс пришол момент и мне нужно русифицировать прогу, а точнее саму мфц, вспомнил про этот топик и решил к нему вернутся.

Так всётаки на что влияет:
Цитата(Rapalex @  16.7.2007,  11:51 Найти цитируемый пост)
в настройках проекта ->Resources->General->Culture




--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Earnest
Дата 4.9.2007, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



В основном на дескриптор языка, который будет записан в ресурсах по умолчанию.
Каждый ресурс может иметь несколько вариантов для разных языков. По-умолчанию ставится тот, который указан в настройках. Его можно поменять (проперти-Language), и тогда в скобках рядом с именем ресурса будет язык.
Кроме того, если ты, скажем, в английском диалоге напишешь русские буквы, то в дизайнере все будет вроде нормально, но при запуске - по гречески... На локаль, установленную в процессе, это, по-моему, не влияет.


--------------------
...
PM   Вверх
Earnest
Дата 4.9.2007, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Насчет русификации "самой MFC" - нет (по крайней мере в 7) у нее русской локализации (в стандартной поставке).
Если заглянешь в каталог atlmfc\ include там увидишь несколько подкаталогов типа "l.fra" и прочая. Вот там, по идее должен появиться "l.rus" с соответствующим содержанием (можно перевести руками). Далее, в своем файле ресурсов *rc ищешь вхождение afxres.rc и заменяешь его на l.rus\afxres.rc. Но лучше это сделать не в тексте (там дважны надо), а в окне "Resource Includes" - нижняя часть "Compile-time directives".

Есть еще один способ - подгрузить в среду dll с локализованными ресурсами:
AfxGetModuleState()->m_appLangDLL = LoadLibrary ("MfcXXloc.dll").
Только где ее взять, я не помню. Вроде был какой-то сайт (здесь на форуме упоминался), где народ это дело предоставляет.


--------------------
...
PM   Вверх
Rapalex
Дата 4.9.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Ты нечто подобное говорила в этом топике, и в нём тип дал ссылку на свой сайт где есть переведённые файлы (щяс там и для 2005 студии есть).
Вчера в МСДНе вычитал что етот способ подойдёт для статической линковки МФЦ, а у меня несколько ДЛЛек, такчто мне это не подходит.
На РСДНе нашол пример кода и написал в инит инстанс:
Код

    HINSTANCE hRusDLL = ::LoadLibrary(_T("MFC42RUS.DLL"));
    if (hRusDLL != NULL)
    {
        AFX_MODULE_STATE* pState = AfxGetModuleState();
        ASSERT(pState != NULL);
        if (pState->m_appLangDLL != NULL)
            ::FreeLibrary(pState->m_appLangDLL);
        pState->m_appLangDLL = hRusDLL;
    }

В резулттате выполнения этих строк в окне аутпута выводится:
Цитата

Loaded 'C:\WINDOWS\system32\MFC42RUS.DLL', Binary was not built with debug information.
Unloaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_91481303\mfc80ENU.dll'

а МФЦ перевелась на руский.

Мне не равится что русская библиотека в директории систем32, а ещё мне кажется что она не уникод.
Файл MFC42RUS.DLL я не копировал и откуда он взялся понятия не имею, и это мнея просто бесит, вот и не знаю как её дистрибутировать. Скорее всего в папку к экзешнику положу.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Rapalex
Дата 4.9.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Цитата(Earnest @  4.9.2007,  08:07 Найти цитируемый пост)
Каждый ресурс может иметь несколько вариантов для разных языков. По-умолчанию ставится тот, который указан в настройках. Его можно поменять (проперти-Language), и тогда в скобках рядом с именем ресурса будет язык.


Это я знаю, уже поудалял анклийские копии.

Цитата(Earnest @  4.9.2007,  08:07 Найти цитируемый пост)
В основном на дескриптор языка, который будет записан в ресурсах по умолчанию.


Немого непонял фразы?


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Earnest
Дата 4.9.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Rapalex @  4.9.2007,  11:50 Найти цитируемый пост)
Вчера в МСДНе вычитал что етот способ подойдёт для статической линковки МФЦ,

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

Цитата(Rapalex @  4.9.2007,  11:50 Найти цитируемый пост)
а ещё мне кажется что она не уникод.

Ресурсы всегда в уникоде, по другому не бывает.

Цитата(Rapalex @  4.9.2007,  11:50 Найти цитируемый пост)
Скорее всего в папку к экзешнику положу. 

Да, это правильно, к своим dll-кам. Хуже нет, когда какое-то долбанное приложение изменит эту DLL-ку в system32. Я как-то поставила одну программку архитектурную, после чего у меня половина приложений стала по-немецки выражаться.
Заподозрив, в чем может быть дело, нашла и выкинула их loc.DLL из system32. А как быть тем пользователям, которые не знают? Деинсталляция эту хрень из system32 не удалит...

На предупреждение при загрузке не обращай внимания - ну нет дебуг-символов, так и нафига они ресурсам...
Меня вот лично напрягает, что библиотека называется MFC42, но все вроде работает... И я тоже не помню, откуда она у меня взялась...

Добавлено через 4 минуты и 26 секунд
Цитата(Rapalex @  4.9.2007,  12:57 Найти цитируемый пост)
Немого непонял фразы? 

Ну, я не совсем корректно выразилась.
Все ресурсы в rc файле сидят в языковых блоках, типа:

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
... русские ресурсы
#endif

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
... английские ресурсы
#endif

и т.д.

От этой "калчер" зависит только то, в какой блок помещается вновь созданный ресурс. Ну еще code_page там где-то записывается.




--------------------
...
PM   Вверх
Rapalex
Дата 4.9.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Цитата(Earnest @  4.9.2007,  12:35 Найти цитируемый пост)
Ресурсы всегда в уникоде, по другому не бывает.

Знаю.
Цитата(Earnest @  4.9.2007,  12:35 Найти цитируемый пост)
 Хуже нет, когда какое-то долбанное приложение изменит эту DLL-ку в system32.

Сргласен на все 100.

Ты хочеш сказать что ресурсы без языка лягут в отдел который тут:
Цитата(Rapalex @  3.9.2007,  12:15 Найти цитируемый пост)
в настройках проекта ->Resources->General->Culture

указан?

Добавлено через 2 минуты и 10 секунд
Цитата(Earnest @  4.9.2007,  12:35 Найти цитируемый пост)
На предупреждение при загрузке не обращай внимания - ну нет дебуг-символов, так и нафига они ресурсам...

Тут я хотел показать что каркас по умолчанию подгружет 80 из WinSxS, а я подгружаю 42 и из систем32.



--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Rapalex
Дата 4.9.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Цитата(Earnest @  4.9.2007,  08:23 Найти цитируемый пост)
Если заглянешь в каталог atlmfc\ include там увидишь несколько подкаталогов типа "l.fra" и прочая. Вот там, по идее должен появиться "l.rus" с соответствующим содержанием (можно перевести руками). Далее, в своем файле ресурсов *rc ищешь вхождение afxres.rc и заменяешь его на l.rus\afxres.rc. Но лучше это сделать не в тексте (там дважны надо), а в окне "Resource Includes" - нижняя часть "Compile-time directives".


TN057: Localization of MFC Components
Using the Provided MFC Localized Resources
Цитата

As of this writing, MFC supports Chinese, German, Spanish, French, Italian, Japanese, and Korean. The files which contain these localized versions are in the MFC\INCLUDE\L.* (the 'L' stands for localized) directories. The German files are in MFC\INCLUDE\L.DEU, for example. To cause your application to use these RC files instead of the files located in MFC\INCLUDE, add a /IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU to your RC command line (this is just an example; you would need to substitute your locale of choice as well as the directory into which you installed Visual C++).

The above instructions will work if your application links statically with MFC. 


Вроде так.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Earnest
Дата 4.9.2007, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Rapalex @  4.9.2007,  14:48 Найти цитируемый пост)
указан?

Да
Цитата(Rapalex @  4.9.2007,  14:48 Найти цитируемый пост)
Тут я хотел показать что каркас по умолчанию подгружет 80 из WinSxS, а я подгружаю 42 и из систем32.

А, не поняла замысла smile 
Но сам факт несколько удручает: хочется, канешна, посвежей библиотечку русскую.


--------------------
...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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