Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как различить кнопки ? динамически создаваемые 
:(
    Опции темы
SAVe
Дата 23.11.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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, ..., ...). 





PM MAIL   Вверх
Dblma
Дата 23.11.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 6.11.2007
Где: Moscow

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



Возможно использовать ON_MESSAGE( WM_COMMAND, OnMessage )

Правда тогда в OnMessage будет передаваться хендл контрола, а не его ID.
PM MAIL ICQ   Вверх
Earnest
Дата 25.11.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(SAVe @  23.11.2007,  19:03 Найти цитируемый пост)
Но воспользоваться макросом
ON_CONTROL_RANGE(BN_CLICKED,WM_USER+10,WM_USER+20,OnBnClicked) 
не получиться т.к. количество кнопок заранее не известно , а делать слишком широкий диапазон "с запасом" не хочеться.

Напрасно не хочется. Для кнопок в любом случае нужно выделить диапазон идентификаторов, чтобы они не пересеклись в другими элементами формы. Всего ид-ров может быть ffff. Тебе что, жалко пару тысяч отстегнуть? Второй вариант (без ON_CONTROL_RANGE) - перекрыть OnCmdMsg и обрабатывать кнопки там. Но диапазон все равно выделить придется. Так что лучше не париться и использовать On_CONTROL_RANGE.



--------------------
...
PM   Вверх
SAVe
Дата 26.11.2007, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 15.10.2007

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



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


 




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


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

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