RichEdit в Vista

Тема в разделе "WASM.WIN32", создана пользователем Wolfgang, 21 дек 2006.

  1. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    Здравствуйте, уважаемые!

    Не подскажете ли, где можно найти отдельно файл riched20.dll от Висты (русской, если есть)?
     
  2. MikDay

    MikDay New Member

    Публикаций:
    0
    Регистрация:
    5 май 2005
    Сообщения:
    32
    Адрес:
    Minsk
    Если нужна новая версия библиотеки RichEdit, то, вероятно тебе нужен другой файл. Уже в WinXP SP1 для использования новых возможностей RichEdit версии 4.1 следует грузить библиотеку Msftedit.dll. Хотя старая библиотека тоже осталась в системе для совместимости.
     
  3. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    скажи спасибо, что хоть подправить дают )))
     
  4. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    А Msftedit от Висты есть где-либо? А то в XP SP2 он с тем же глюком, что и Riched20
     
  5. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    В догонку: кто-нибудь знает почему системные .exe Висты не идут например на XP? Пишет "не является приложением win32" хотя навскидку PE заголовок вроде не изменился. Или это новая версия NET на Висте?
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Freecod
    Оффтоп, но там скорее всего манифесты.
     
  7. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    IceStudent
    Не в манифестах дело.
    Сдесь 2 проблемы могут быть
    1) Возможно .ехе из висты является 64х битным, а ХР нет.
    2) РЕ всеже изменили немного (вроде как - просто слышал что версия новая, но не копал). Но обратную совместимость в 32х битных версиях оставили.
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Глянул блокнот. В манифест всё же добавили кое-что, но не смертельно.
    Проблема в версии системы и подсистемы, новые функции в импорте (которых нет в старых версиях ос).
     
  9. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    Раз уж оффтоп... :) :
    exe 32 битные, видно всё-таки структура файла в релизе 6000 изменилась...
     
  10. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    IceStudent
    таки Msftedit от Висты есть где-либо?
     
  11. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    Попроси у кого-нибудь с установленной вистой (релиз для компаний, 6000) скинуть тебе файл. Куча народу себе висту поставила, посмотри по форумам. На cracklab.ru топ о защите висты, там попроси.
     
  12. MikDay

    MikDay New Member

    Публикаций:
    0
    Регистрация:
    5 май 2005
    Сообщения:
    32
    Адрес:
    Minsk
    Wolfgang

    Зачем тебе новая версия библиотеки? В чем заключается "глюк"?
     
  13. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    "Глюк" заключается в невозможности выставить некоторые фонты посредством ITextFont::SetName, в частности Times New Roman. А новая версия библиотеки мне нужна, чтобы убедиться, что ошибка в ней, а не в моей программе.

    Возможно, что все дело в выставлении чарсета методами TOM. Кстати, как его корректно выставить, если метод SetName у интерфейса ITextFont есть, а SetCharSet нет?
     
  14. MikDay

    MikDay New Member

    Публикаций:
    0
    Регистрация:
    5 май 2005
    Сообщения:
    32
    Адрес:
    Minsk
    Думаю, что Richedit не виноват. Масса программ меняет шрифты. Не понятно, что конкретно ты делаешь в своей программе. На уровне WinAPI посмотри функции CreateFont, CreateFontIndirect, ChooseFont (выдает стандартный диалог выбора шрифта). Для смены шрифта в окне используют сообщение WM_SETFONT. Для Richedit есть сообщение EM_SETCHARFORMAT ...
     
  15. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    MikDay
    тоже хотелось бы думать так же, но...

    На уровне WinAPI все ясно и все работает, отрицать это мне бы и в голову не пришло, но в моем случае речь идет об использовании интерфейсов TOM. Вынужден это делать, так как менять выделение в ричедите в силу ряда причин не имею возможности.
    Если совсем-совсем конкретно, то интересует следующее:
    Как методами интерфейсов TOM выставить шрифту чарсет?

    Предвидя многочисленные советы обратиться к МСДН, утверждаю, что ответа там я не нашел
     
  16. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Код (Text):
    1. void ChangeFontNameSizeBold(ITextSelection *pSel)
    2. {
    3.     ITextFont *pFontSel = NULL, *FontDuplicate = NULL;
    4.    
    5.     // Get ITextFont version of non-duplicated font.
    6.     if (FAILED(pSel->GetFont( &pFontSel))
    7.         return;
    8.  
    9.     // Duplicate the font.
    10.     pFontSel->GetValue(&pFontDuplicate);
    11.     pFontSel->Release();
    12.     if(!pFontDuplicate)
    13.         return;
    14.  
    15. // Changes here happen only to the underlying data structure,
    16. // such as a CHARFORMAT, in the duplicate - NOT to the actual
    17. // story text.
    18.     BSTR bstrTemp =
    19.          UnicodeBstrFromAnsi("Times New Roman");   // Font name
    20.     pFontDuplicate->SetName(bstrTemp);
    21.     SysFreeString(bstrTemp);
    22.     pFontDuplicate->SetBold(tomTrue);    // Bold
    23.     pFontDuplicate->SetSize(10.5);       // 10.5 point font.
    24.     pFontDuplicate->SetAnimation(tomBlackMarchingAnts);
    25.  
    26.     // Now apply change to text as one change: one screen
    27.     // update, one undo. You can also apply the font object
    28.     // to different ranges before you free it.
    29.     pSel->SetFont(pFontDuplicate);
    30.     pFontDuplicate->Release();
     
  17. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    ITextFont::SetLanguageID?
     
  18. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    К сожалению, SetLanguagID не помогает (смотрю сохраненный при этом ртф, там четко сказано:
    {\f0\fnil\fcharset204 MS Sans Serif;}{\f1\fnil\fcharset0 Times New Roman;})

    Пример МСДН-овский, действительно, но именно про чарсет там ничего нет...
    Разве что выставлять сначала тот шрифт, в котором есть только русский чарсет, а потом на ег основе... но неуниверсально