Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать какой элемент сработал ? 
V
    Опции темы
FApe
Дата 15.7.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, вопрос вот в чем:

есть много элементов типа CheckBox созданных динамически. Как узнать на каком элементе произошел клик если не создавать для каждого обработчик события. откуда вытащить его ID ?
PM MAIL   Вверх
AlexT84
Дата 15.7.2009, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В идеале ID задаётся при создании.
PM MAIL   Вверх
FApe
Дата 15.7.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(AlexT84 @ 15.7.2009,  16:16)
В идеале ID задаётся при создании.

Задается то задаеться но если этих элементов большое количество 100 ... 200 ... 300 и у каждого есть свой (ID_CHECKBOX + i)  КАК мне узнать в какой пользователь ткнул мышкой не создавая 100 ... 200 ... 300 функций обработчиков события ? вот в чем вопрос )
PM MAIL   Вверх
AlexT84
Дата 15.7.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Когда ты кликаеш по чекбоксу тебе приходит WM_COMMAND, где LOWORD(wParam) и есть его ID. А дальше уже -- как сам знаеш.
PM MAIL   Вверх
Earnest
Дата 15.7.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



1) Если идентификаторы чек-боксов выделяются из какого-то пула, то можно вместо обработчика ON_COMMAND (или ON_BN_CLICKED) использовать ON_COMMAND_RANGE. Сигнатура такого обработчика немного другая: void (UINT), где параметр UINT и есть ID нажатой кнопки
2) Можно переопределить OnCmdMsg и проверить там. Но тогда тебе придется разобраться с кодами (т.к. OnCmdMsg приходит и по поводу апдейтов).


--------------------
...
PM   Вверх
FApe
Дата 16.7.2009, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(AlexT84 @ 15.7.2009,  16:36)
Когда ты кликаеш по чекбоксу тебе приходит WM_COMMAND, где LOWORD(wParam) и есть его ID. А дальше уже -- как сам знаеш.

спасибо ) проблемма разрешена !

Добавлено через 3 минуты и 11 секунд
Цитата(Earnest @ 15.7.2009,  19:15)
1) Если идентификаторы чек-боксов выделяются из какого-то пула, то можно вместо обработчика ON_COMMAND (или ON_BN_CLICKED) использовать ON_COMMAND_RANGE. Сигнатура такого обработчика немного другая: void (UINT), где параметр UINT и есть ID нажатой кнопки
2) Можно переопределить OnCmdMsg и проверить там. Но тогда тебе придется разобраться с кодами (т.к. OnCmdMsg приходит и по поводу апдейтов).

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


 




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


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

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