Здравствуйте, уважаемые! Не подскажете ли, где можно найти отдельно файл riched20.dll от Висты (русской, если есть)?
Если нужна новая версия библиотеки RichEdit, то, вероятно тебе нужен другой файл. Уже в WinXP SP1 для использования новых возможностей RichEdit версии 4.1 следует грузить библиотеку Msftedit.dll. Хотя старая библиотека тоже осталась в системе для совместимости.
В догонку: кто-нибудь знает почему системные .exe Висты не идут например на XP? Пишет "не является приложением win32" хотя навскидку PE заголовок вроде не изменился. Или это новая версия NET на Висте?
IceStudent Не в манифестах дело. Сдесь 2 проблемы могут быть 1) Возможно .ехе из висты является 64х битным, а ХР нет. 2) РЕ всеже изменили немного (вроде как - просто слышал что версия новая, но не копал). Но обратную совместимость в 32х битных версиях оставили.
Глянул блокнот. В манифест всё же добавили кое-что, но не смертельно. Проблема в версии системы и подсистемы, новые функции в импорте (которых нет в старых версиях ос).
Попроси у кого-нибудь с установленной вистой (релиз для компаний, 6000) скинуть тебе файл. Куча народу себе висту поставила, посмотри по форумам. На cracklab.ru топ о защите висты, там попроси.
"Глюк" заключается в невозможности выставить некоторые фонты посредством ITextFont::SetName, в частности Times New Roman. А новая версия библиотеки мне нужна, чтобы убедиться, что ошибка в ней, а не в моей программе. Возможно, что все дело в выставлении чарсета методами TOM. Кстати, как его корректно выставить, если метод SetName у интерфейса ITextFont есть, а SetCharSet нет?
Думаю, что Richedit не виноват. Масса программ меняет шрифты. Не понятно, что конкретно ты делаешь в своей программе. На уровне WinAPI посмотри функции CreateFont, CreateFontIndirect, ChooseFont (выдает стандартный диалог выбора шрифта). Для смены шрифта в окне используют сообщение WM_SETFONT. Для Richedit есть сообщение EM_SETCHARFORMAT ...
MikDay тоже хотелось бы думать так же, но... На уровне WinAPI все ясно и все работает, отрицать это мне бы и в голову не пришло, но в моем случае речь идет об использовании интерфейсов TOM. Вынужден это делать, так как менять выделение в ричедите в силу ряда причин не имею возможности. Если совсем-совсем конкретно, то интересует следующее: Как методами интерфейсов TOM выставить шрифту чарсет? Предвидя многочисленные советы обратиться к МСДН, утверждаю, что ответа там я не нашел
Код (Text): void ChangeFontNameSizeBold(ITextSelection *pSel) { ITextFont *pFontSel = NULL, *FontDuplicate = NULL; // Get ITextFont version of non-duplicated font. if (FAILED(pSel->GetFont( &pFontSel)) return; // Duplicate the font. pFontSel->GetValue(&pFontDuplicate); pFontSel->Release(); if(!pFontDuplicate) return; // Changes here happen only to the underlying data structure, // such as a CHARFORMAT, in the duplicate - NOT to the actual // story text. BSTR bstrTemp = UnicodeBstrFromAnsi("Times New Roman"); // Font name pFontDuplicate->SetName(bstrTemp); SysFreeString(bstrTemp); pFontDuplicate->SetBold(tomTrue); // Bold pFontDuplicate->SetSize(10.5); // 10.5 point font. pFontDuplicate->SetAnimation(tomBlackMarchingAnts); // Now apply change to text as one change: one screen // update, one undo. You can also apply the font object // to different ranges before you free it. pSel->SetFont(pFontDuplicate); pFontDuplicate->Release();
К сожалению, SetLanguagID не помогает (смотрю сохраненный при этом ртф, там четко сказано: {\f0\fnil\fcharset204 MS Sans Serif;}{\f1\fnil\fcharset0 Times New Roman;}) Пример МСДН-овский, действительно, но именно про чарсет там ничего нет... Разве что выставлять сначала тот шрифт, в котором есть только русский чарсет, а потом на ег основе... но неуниверсально