Как CRichEditCtrl узнает, что была выполнена операция вставки?
У него есть такие методы, какCRichEditCtrl::Copy()
, CRichEditCtrl::Paste()
вы можете позвонить, но я не могу обнаружить никаких сообщений, отправляемых элементом управления Windowsвыполнять операция вставки. Кто-нибудь знает, существует ли такая вещь? Или делаетCRichEditCtrl
сделать что-то более низкое, например, мониторинг событий WM_CHAR? Если да, могу ли я использовать какие-либо внутренние методы или мне просто нужно свернуть свои собственные, чтобы переопределить стандартную функциональность вставки?
Что я на самом деле хочу, это для моего пользовательского подкласса (CMyRichEditCtrl : CRichEditCtrl
) игнорировать любое форматирование вставленного текстав к контролю. Либо получая данные буфера обмена в другом формате, либо вставляя их как обычно и немедленно удаляя форматирование вставленного текста.
Что я пробовал до сих пор:
Проверка сообщения на WM_PASTE вCMyRichEditCtrl::PreTranslateMessage()
Создание методаvirtual void CMyRichEditCtrl::Paste()
Установка точки останова наCRichEditCtrl::Paste()
в afxcmn.inlдемпингкаждый сообщение проходит черезCMyRichEditCtrl::PreTranslateMessage()
Результаты:
1: сообщение WM_PASTE не обнаружено
2: это никогда не называется
3: это никогда не ударил ...как?
4:Контрольникогда получает любые WM_COMMAND, WM_PASTE или сообщения, связанные с фокусом. В основном только сообщения о перемещении мыши и нажатии клавиши.
Кажется, другие люди действительно сделали это успешно. Мне интересно, может ли моя версия MFC или что-то испортить, на данный момент.