Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: RichEdit и буфер обмена  (Прочитано 13420 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kondrat
Интересующийся

ua
Offline Offline

« : 17-06-2009 09:15 » 

Как запретить вставку данных в RichEdit из буфера обмена и обрабатывать это событие самому?

Пробую сабклассить RichEdit и ловить ctrl-v, не помогает.
Код:
mov eax,uMsg
.if eax==WM_KEYDOWN
.if wPm==VK_CONTROL
mov eax,lPm
shr eax,16
.if ax==1Dh
xor eax,eax
ret
.endif
.endif
jmp @F
.else
@@: invoke CallWindowProc,pOldRichProc,hWin,uMsg,wPm,lPm
                        xor eax,eax
ret
.endif
invoke CallWindowProc,pOldRichProc,hWin,uMsg,wPm,lPm
xor eax,eax
ret
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 17-06-2009 09:25 » 

попробуй забрить

WM_CUT   
WM_COPY 
WM_PASTE
WM_CLEAR
WM_UNDO 
Записан

Kondrat
Интересующийся

ua
Offline Offline

« Ответ #2 : 17-06-2009 09:33 » 

попробуй забрить

WM_CUT   
WM_COPY 
WM_PASTE
WM_CLEAR
WM_UNDO 

пробовал.
Код:
.elseif eax==WM_PASTE
int 3
эти сообщения вообще не ловятся :/
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 17-06-2009 09:45 » 

а Spy++ или подобная программа что показывают ? Надо просто подсмотреть )
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 17-06-2009 09:48 » 

нашёл в мсдн - не оно ?

EM_PASTESPECIAL
The EM_PASTESPECIAL message pastes a specific clipboard format in a rich edit control.
Записан

Kondrat
Интересующийся

ua
Offline Offline

« Ответ #5 : 17-06-2009 10:05 » 

а Spy++ или подобная программа что показывают ? Надо просто подсмотреть )
Spy++ показывает только комбинацию нажатых клавиш - nVirtKey=VK_CONTROL, ScanCode=1Dh; это ловится.
WM_PASTE нет в списке.

ставлю бряк на EM_PASTESPECIAL и в род. окне и обработчике RichEdit - нифига. В списке сообщений EM_PASTESPECIAL нет тоже.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 17-06-2009 10:23 » 

остаётся метод научного тыка: ловить ВСЕ сообщения, отбраковывать ненужные (сразу можно отбросить WM_PAINT , WM_MOUSEMOVE и тд)
Записан

Basurman
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 17-06-2009 19:32 » 

WM_PASTE надо переписывать.
Если берётся стандартный RichEdit, значит надо переписать его стандартную обработку вставки из буфера обмена.
Записан
Kondrat
Интересующийся

ua
Offline Offline

« Ответ #8 : 18-06-2009 06:59 » 

WM_PASTE надо переписывать.
Если берётся стандартный RichEdit, значит надо переписать его стандартную обработку вставки из буфера обмена.
так в этом и вопрос - где это делать?? я не знаю где ловить этот ctrl-v.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #9 : 18-06-2009 07:38 » 

Kondrat, ты уже попробовал метод научного тыка ? Делов то минут на 10
Записан

Basurman
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 18-06-2009 11:47 » new

Для чего ловить ctrl-v?
По нажатию ctrl-v, оконной поцедуре посылается сообщение WM_PASTE - вот его то и надо обработать самому.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines