Как убрать курсор из richedit?

Тема в разделе "WASM.BEGINNERS", создана пользователем Flasher, 14 сен 2006.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    HideCaret не сработывает..
    RichEdit в режиме ES_READONLY, и курсор там не нужен.
    Собственно 2 задачи, как убрать курсор из RichEdit, и как сделать чтоб курсор mous'a при наведении на поле RichEdit'a, не менялся?

    С первой задачкой бы справился с помощью обработки сообщения WM_SETFOCUS еслиб не кой-какие сложности.
    Дело в том, что нужно при выделении текста - копировать. И вот как это реализовал
    Код (Text):
    1. NewRichEditProc proc hCtl:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
    2.        .if uMsg ==WM_LBUTTONDOWN
    3.           invoke SendMessage,hCtl,EM_HIDESELECTION,0,0
    4.        .elseif uMsg ==WM_LBUTTONUP
    5.           invoke SendMessage,hCtl,WM_COPY,0,0
    6.           invoke SendMessage,hCtl,EM_HIDESELECTION,1,0
    7.      .endif
    8.       invoke CallWindowProc,hNewRichProc,hCtl,uMsg,wParam,lParam
    9.       ret
    10. NewRichEditProc endp
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    2 задача решается суперклассингом. Правишь класс RichEdit20A/W, заменяя курсор.
     
  3. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    n0name, спасибо, получилось..
    Нашёл функцию DestroyCaret, но не знаю куда-бы поставить чтоб рас и навсегда убить курсор, даже при нажатии мышки на поле он бы не появился..

    Сделал вот так, и безрезультатно.
    Код (Text):
    1.        .elseif uMsg ==WM_ACTIVATE
    2.           call DestroyCaret
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    invoke CallWindowProc,hNewRichProc,hCtl,uMsg,wParam,lParam
    .if uMsg ==WM_SETFOCUS
    call DestroyCaret
     
  5. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Серавно при WM_LBUTTONDOWN Caret'a показывается...
    Видать окончательно убрать не удастся. Да уже не так важно, главное сделал так что скролл не сбивается при выделении.
    Спасибо, n0name