![]() |
|
![]() ![]() ![]() |
|
SAVe |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 15.10.2007 Репутация: нет Всего: нет |
Я создаю на форме кнопки (в цикле):
for(int i = 0; i<Count ; i++) { CButton * btn = new .... btn->Create(...,WM_USER+i ); } Затем мне нужно реагировать на события нажатия на кнопки и знать какая именно кнопка была нажата. Но я не знаю заранее сколько будет этих кнопок. Т.е. переменная Count вычисляется в процессе выполнения. Присвоить каждой свой ID можно (что я и делаю - WM_USER+i ). Но воспользоваться макросом ON_CONTROL_RANGE(BN_CLICKED,WM_USER+10,WM_USER+20,OnBnClicked) не получиться т.к. количество кнопок заранее не известно , а делать слишком широкий диапазон "с запасом" не хочеться. Можно всем кнопкам присвоить один ID и направить на один обработчик. Но как тогда определять какая кнопка была нажата? Подскажите пожалуйста как быть? Можно ли это реализовать без наследования от CButton и SendMessage(pParent, WM_USER + N, ..., ...). |
|||
|
||||
Dblma |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 6.11.2007 Где: Moscow Репутация: 1 Всего: 1 |
Возможно использовать ON_MESSAGE( WM_COMMAND, OnMessage )
Правда тогда в OnMessage будет передаваться хендл контрола, а не его ID. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Напрасно не хочется. Для кнопок в любом случае нужно выделить диапазон идентификаторов, чтобы они не пересеклись в другими элементами формы. Всего ид-ров может быть ffff. Тебе что, жалко пару тысяч отстегнуть? Второй вариант (без ON_CONTROL_RANGE) - перекрыть OnCmdMsg и обрабатывать кнопки там. Но диапазон все равно выделить придется. Так что лучше не париться и использовать On_CONTROL_RANGE. -------------------- ... |
|||
|
||||
SAVe |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 15.10.2007 Репутация: нет Всего: нет |
Спасибо за советы. Направление движения ясно.
|
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |