Копировать операцию быстрого доступа с помощью CRichEditCtrl в MFC

Я очень новичок в МФЦ. У меня есть следующий код для ярлыков Copy и SelectAll для объекта CRichEditCtrl.

ON_COMMAND(ID_EDIT_COPY, OnCopy)
ON_COMMAND(ID_EDIT_SELECT_ALL, OnSelectAll)

Но я не могу поймать точку останова для Copy (Ctrl+C) и SelectAll (Ctrl+A) в функциях, которые я написал здесь, поскольку они не выполняются.

Здесь объект CRichEditCtrl доступен только для чтения (текст предназначен для чтения и не может быть изменен).

Я также хочу обеспечить функциональность выделения текста с помощью мыши для объекта CRichEditCtrl.

Любая идея о том, как этого добиться?


person user1833852    schedule 17.02.2015    source источник


Ответы (1)


Эти действия не выполняются с известным нам значением WM_COMMAND. Также нажатия клавиш проверяются внутри и обрабатываются внутри.

Внутри есть специальные оконные сообщения с именами WM_COPY и WM_PASTE для некоторых действий, которые взаимодействуют с буфером обмена.

Afaik выбор (Выбрать все) делается полностью внутренним. вы можете попытаться создать подкласс элемента управления RTF и перехватить сообщение EM_SETSEL.

Если вы хотите перехватывать нажатия клавиш, вы можете использовать PreTranslateMessage или снова создать подкласс элемента управления RTF.

person xMRi    schedule 17.02.2015
comment
Любая идея о том, как сделать выделение текста с помощью мыши для этого объекта CRichEditCtrl только для чтения? - person user1833852; 19.02.2015
comment
Вы установили его только для чтения или использовали EnaleWindow? В моих элементах управления RTF я могу использовать мышь для выбора текста. (EM_SETREADONLY) - person xMRi; 19.02.2015
comment
Это только для чтения. Есть ли способ использовать EM_GETSEL в PreTranslateMessage(), чтобы получить выделенный текст из объекта CRichEditCtrl. - person user1833852; 19.02.2015
comment
АФАИК да. В чем дело? - person xMRi; 19.02.2015
comment
Я хочу выделить текст с помощью мыши, которую мы видим в других редакторах. - person user1833852; 19.02.2015
comment
Если также читать только элементы управления RTF. И мышкой можно выделить текст. Я не понимаю проблемы, у вас есть. Может быть, вам следует начать новый вопрос. - person xMRi; 19.02.2015