Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват вырезания текста 
V
    Опции темы
Cheloveck
Дата 6.4.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Нужно перед тем как текст будет вырезан из edit, просканировать его на наличее определённых символов.

Код

BOOL SomeEdit::PreTranslateMessage(LPMSG lpMsg)
{
    switch(lpMsg->message)
    {
    case WM_CUT:
        // обработка.
    }
}

не получается. Сообщение даже не ловится.


--------------------
user posted image
PM Jabber   Вверх
Andrey44
Дата 7.4.2009, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



Код

BOOL SomeEdit::PreTranslateMessage(LPMSG lpMsg)
{
    switch(lpMsg->message)
    {
    case WM_CUT:
        // обработка.
    }

    if(lpMsg->hwnd==m_edit.GetSafeHwnd() && lpMsg->message==WM_CUT)
    {
        // your code
     }
}



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Earnest
Дата 7.4.2009, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Надо полагать, это сообщение не проходит через очередь, а посылается синхронно (а PreTranslate фильтрует только пост-сообщения). Нужно написать свой обработчик WM_CUT на эдите.


--------------------
...
PM   Вверх
Cheloveck
Дата 7.4.2009, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Andrey44, твоё дополнение не будет работать, потому что только фильтрует то, что и так не работало =)
Цитата

Надо полагать, это сообщение не проходит через очередь, а посылается синхронно (а PreTranslate фильтрует только пост-сообщения). Нужно написать свой обработчик WM_CUT на эдите.

Я так и предполагал. Но очень надеялся на то, что в MFC есть красивое решение этой задачи. Ну раз уж так, будим переопределять оконную процедуру.


Это сообщение отредактировал(а) Cheloveck - 7.4.2009, 08:46


--------------------
user posted image
PM Jabber   Вверх
Earnest
Дата 8.4.2009, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Не оконную процедуру. А просто один из обработчиков класса. Оконная процедура в MFC общая на всех, не вздумай ее переопределять - все развалится. И чем это не красивое решение?


--------------------
...
PM   Вверх
Cheloveck
Дата 8.4.2009, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Да что-то я не нашёл никакого подходящего обработчика. А с процедурой ничего и не получилось))


--------------------
user posted image
PM Jabber   Вверх
Earnest
Дата 8.4.2009, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Блин! Что значит, не нашел? В Визарде, что ли, не нашел?  
Тебе чего нужно перехватать WM_CUT? Вот для него и пиши обработчик. 
МОЖНО ЗАМЕНИТЬ ОБРАБОТЧИК ЛЮБОГО СООБЩЕНИЯ, КОТОРОЕ ПРИХОДИТ КОНТРОЛУ.
А не только тех, что микросовтовские разработчики изволили перечислить в визарде.

... программисты .... 


--------------------
...
PM   Вверх
Cheloveck
Дата 8.4.2009, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Я визартом не пользуюсь. Не нашёл я просто метод, похожий на OnCut etc.

P.S. ладно, сам разберусь. Всем спасибо!


--------------------
user posted image
PM Jabber   Вверх
Earnest
Дата 8.4.2009, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Cheloveck @  8.4.2009,  09:56 Найти цитируемый пост)
Я визартом не пользуюсь. Не нашёл я просто метод, похожий на OnCut etc.

В ВинАПИ примерно 2000 различных сообщений. Неужели они все должны быть реализованы в виде методов CWnd? Обработчик любого сообщения можно написать с интерфесом LRESULT (WPARAM, LPARAM) и вставить в карту макросом ON_MESSAGE. Если нужно вызвать стандартную обработку - просто поставь в конце своего обработчика вызов Default().


--------------------
...
PM   Вверх
Cheloveck
Дата 8.4.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Цитата

бработчик любого сообщения можно написать с интерфесом LRESULT (WPARAM, LPARAM) и вставить в карту макросом ON_MESSAGE. Если нужно вызвать стандартную обработку - просто поставь в конце своего обработчика вызов Default().

Вот спасибо, не знал...  Я на MFC месяца 2 всего пишу, до этого только API.


--------------------
user posted image
PM Jabber   Вверх
Earnest
Дата 8.4.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Если хорошо знаешь АПИ, с МФС проблем быть не должно: это весьма тонкая обертка, сквозь которую АПИ просто-таки выпирает. Почитай внимательно в MSDN tecnical articles про обработчики сообщений (проще найти статью, набрав что-то вроде ON_MESSAGE). Еще есть статьи про диспетчеризацию команд во фрейм-ворке. Это, пожалуй, все, что привносит MFC, остальное ерунда.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.