сделать чтото вроде RichEdit20A

Тема в разделе "WASM.WIN32", создана пользователем readme, 24 фев 2006.

  1. readme

    readme New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2005
    Сообщения:
    271
    Адрес:
    Russia
    нужно сделать вот как на картинке, собсно из программы мирк, там над ником меняется указатель и нужно получать текст к примеру ника когда пользователь щёлкает правой кнопкой мыщи,и чтоб нежно было менять цвет любых слов.

    посматрел имя класса STATIC но как при помощи него такое делать даже непойму

    [​IMG] _276563614__Untitled_1.gif
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    wm_ctlcolorstatic?
     
  3. readme

    readme New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2005
    Сообщения:
    271
    Адрес:
    Russia
    WM_CTLCOLORSTATIC поможет отрисовать цвет отдельных слов?

    а как сделать также возможным выделения текста?
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    если отдельный цвет для каждого слова, то рисуй сам:

    DrawText + DT_CALCRECT + SetTextColor + SetBkColor
     
  5. readme

    readme New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2005
    Сообщения:
    271
    Адрес:
    Russia
    как хотябы определять положение мыши над определёнными словами?
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Ну вот же:

    DrawText + DT_CALCRECT

    Передавай последовательно в DrawText строку, которая состоит из 0,1,2,3 и т.д. слов исходного текста. Как только координаты курсора, передаваемые при WM_MOUSEMOVE через lParam, попадут в RECT, - значит мышь над последним добавленным в строку словом.
     
  7. readme

    readme New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2005
    Сообщения:
    271
    Адрес:
    Russia
    но ведь DrawText + DT_CALCRECT позволяет только узнать размер текста, так выходит если к примеру мне надо вычислять каждый раз над каким словом щас курсор, вычисляя всё по пикселам
     
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Все правильно. Вычислять по пикселям.

    Потому что нет функции WordFromPoint, которая бы возвращала слово, над которым находится указатель мыши.
     
  9. SDragon

    SDragon New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2005
    Сообщения:
    133
    Адрес:
    Siberia
    Есть, это функция GetTextExtentExPoint. Она возвращает номер символа по x-координате.
     
  10. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Нет, потому что GetTextExtentExPoint возвращает номер символа, а не слово. И считать все равно надо :)
     
  11. readme

    readme New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2005
    Сообщения:
    271
    Адрес:
    Russia
    а нет готового решения как в браузере отображать?
     
  12. readme

    readme New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2005
    Сообщения:
    271
    Адрес:
    Russia
    а если так с RichEdit
    Код (Text):
    1.  
    2.   mask := SendMessage(Handle, EM_GETEVENTMASK, 0, 0);
    3.   SendMessage(RichEdit1.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK);
    4.   SendMessage(RichEdit1.Handle, EM_AUTOURLDETECT, Integer(True), 0);
    5.  


    то после этого он выделяет слова к примеру на www.чтото там может можно както исправить базу этих слов?