Один обработчик сообщений для нескольких однотипых элементов
От: LinXor  
Дата: 09.12.02 06:59
Оценка:
Приветствую всех.
Недавно столкнулся с необходимостью использования одного обработчика сообщений для нескольких (16 штук) EditControl-ов. Нашел в MSDN некий ON_CONTROL_RANGE, такого вида: ON_CONTROL_RANGE(Event, IDC-first, IDC-last, memberFxn). Указываю ему в качестве диапазона первый и последний свои EditControl-ы, указываю тип сообщения ON_CHANGE (пробовал и ON_UPDATE), помещаю эту строку ВНЕ описания //{{AFX_MSG_MAP как того просят в MSDN-е... Ничего. Т.е. когда я изменяю значения в контролах сообщение не перехватывается...Зато если изменяется значение ListBox-a, IDC которого вообще нет в указанном мною диапазоне, сообщение перехватывается как милое...Мыслей по этому поводу больше нет...
Заранее благодарен за внимание.
Re: Один обработчик сообщений для нескольких однотипых элеме
От: Vampire Россия  
Дата: 09.12.02 07:12
Оценка: 3 (1)
Здравствуйте, LinXor, Вы писали:

LX>Приветствую всех.

LX>Недавно столкнулся с необходимостью использования одного обработчика сообщений для нескольких (16 штук) EditControl-ов. Нашел в MSDN некий ON_CONTROL_RANGE, такого вида: ON_CONTROL_RANGE(Event, IDC-first, IDC-last, memberFxn). Указываю ему в качестве диапазона первый и последний свои EditControl-ы, указываю тип сообщения ON_CHANGE (пробовал и ON_UPDATE), помещаю эту строку ВНЕ описания //{{AFX_MSG_MAP как того просят в MSDN-е... Ничего. Т.е. когда я изменяю значения в контролах сообщение не перехватывается...Зато если изменяется значение ListBox-a, IDC которого вообще нет в указанном мною диапазоне, сообщение перехватывается как милое...Мыслей по этому поводу больше нет...
LX>Заранее благодарен за внимание.

ON_CONTROL_RAGE требует чтоб идентификаторы шли по порядку (в смысле их значения)

Edit1 — IDC_Edit1 = 1000
Edit2 — IDC_Edit2 = 1001
Edit3 — IDC_Edit7 = 1003
Edit4 — IDC_Edit5 = 1005
ListBox_IDC_List = 1002

ON_CONTROL_RAGE(IDC_Edit1, IDC_Edit7, OnEdit)

Обработаються 1, 2, 7 и ListBox
Если долго мучиться что нибудь получится
Re: Один обработчик сообщений для нескольких однотипых элеме
От: Denwer Россия  
Дата: 09.12.02 07:22
Оценка: 2 (1)
Здравствуйте, LinXor, Вы писали:

LX>Приветствую всех.

LX>Недавно столкнулся с необходимостью использования одного обработчика сообщений для нескольких (16 штук) EditControl-ов. Нашел в MSDN некий ON_CONTROL_RANGE, такого вида: ON_CONTROL_RANGE(Event, IDC-first, IDC-last, memberFxn). Указываю ему в качестве диапазона первый и последний свои EditControl-ы, указываю тип сообщения ON_CHANGE (пробовал и ON_UPDATE), помещаю эту строку ВНЕ описания //{{AFX_MSG_MAP как того просят в MSDN-е... Ничего. Т.е. когда я изменяю значения в контролах сообщение не перехватывается...Зато если изменяется значение ListBox-a, IDC которого вообще нет в указанном мною диапазоне, сообщение перехватывается как милое...Мыслей по этому поводу больше нет...
LX>Заранее благодарен за внимание.

У меня работает так
ON_CONTROL_RANGE(EN_CHANGE, IDC_EDIT1, IDC_EDIT3, MyChangeEdit)

Посмотри что бы IDC-first и IDC-last были нормальными, т.е. что бы в этот промежуток не попадали другие контролы, и что бы били по порядку соответсвенно. Можешь сам задать, например начиная с 1200 и увеличивая на 1.
Re[2]: Один обработчик сообщений для нескольких однотипых эл
От: LinXor  
Дата: 09.12.02 07:24
Оценка:
Я попробую, спасибо ))), а про порядок следования в MSDN написано, или есть другие источники? Еще раз, огромное спасибо.
С уважением.
Re[2]: Один обработчик сообщений для нескольких однотипых эл
От: LinXor  
Дата: 09.12.02 07:26
Оценка:
Спасибо огромное))) и за участие в проблеме и за оперативность. Сегодня же и попробую.
С уважением
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.