powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обработчик события
13 сообщений из 13, страница 1 из 1
Обработчик события
    #32104062
Sikkens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, поскажите пожалуйста:
Как в BCB повесить обработчик события на кнопку, которую я создаю динамически.
...
Рейтинг: 0 / 0
Обработчик события
    #32104257
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свойству onClick пршсвоить имя соответствующей процедуры
например
procedure TForm1.ClcBtn(...) // непомню какие должны быть параметры я на Delphi пишу там маленько по другому
begin
...
end

где-то при создании кнопки пишешь

Button.OnClick = ClcBtn;
...
Рейтинг: 0 / 0
Обработчик события
    #32104312
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В MFC любой элемент создаеться двумя шагами
1. new - так есть резервация соответствующей памяти
2. Create - создание соответствующего элемента на данной памяти.

Функция Create также сопоставляет элементу идентификатор,
который вы можете использовать в message map/ так есть сопоставить функцию реагирования.

Таким образом через идентификатор вы получаете связь созданного элемента с соответствующей функцией

:-))) Понятно написал ?
...
Рейтинг: 0 / 0
Обработчик события
    #32104438
Sikkens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если можно, маленький пример рабочего кода.
(Не сочтите за наглость)
...
Рейтинг: 0 / 0
Обработчик события
    #32104532
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим у вас имееться диалог- cMyDialog : public CDialog
добавим член
Код: plaintext
1.
2.
protected:
  CButton * m_pMyDynButton;

добавляем в .cpp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
#define IDD_MY_BT  1058   // идентификатор кнопки

cMyDialog::cMyDialog () 
{
     m_pMyDynButton =  0 ;  //  для последующей гарантии
     .......
     .......
}

cMyDialog::cMyDialog ()  //  деструктор - удаляем имеющиеся 
{
     if ( m_pMyDynButton )   delete m_pMyDynButton ; 
     .......
     .......
}

cMyDialog::OnInitDialog()  // virtual 
{
     m_pMyDynButton = new CButton();  //  выделяем память
     m_pMyDynButton->Create( "Button Name" ,"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,  // стиль кнопки
   CRect( 10 , 10 , 100 , 30 ), // расположение на диалоге
    this, // родительское окно 
    IDD_MY_BT ); // идентификатор
     .......
     .......
}


в карте сообщении добавляем связь
Код: plaintext
1.
2.
3.
4.
5.
6.
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)

    ON_BN_CLICKED(IDD_MY_BT,OnMyBT_Function)
     .......
     .......
END_MESSAGE_MAP()


и добавляем функцию
в .h
Код: plaintext
1.
    afx_msg void OnMyBT_Function( );

в .cpp
Код: plaintext
1.
2.
3.
4.
5.
6.
void CMyDialog::OnMyBT_Function( )
{
     .......
              //  все что хотим !!! !!!!  удачи , но !!!!!!!   ЧИТАЙ КНИГИ    !!!!!!!!
     .......
}
...
Рейтинг: 0 / 0
Обработчик события
    #32104612
Kilroy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где тут динамика?
Тут вся логика взаимодействия должна быть известна на этапе
компиляции.

Так что "ЧИТАЙ КНИГИ"
...
Рейтинг: 0 / 0
Обработчик события
    #32104616
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Kilroy
А что хотели бы видеть?
Цель то до компиляции ясна .
...
Рейтинг: 0 / 0
Обработчик события
    #32104623
Kilroy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так человек спрашивает о динамическом создании кнопки и динамическом подключении обработчика.
Например кнопка должна создаваться по команде пользователя, а тут
кнопки у Вас еще нет, а диалог уже утяжелился обработчиком, который
может никогда и не понадобится.
...
Рейтинг: 0 / 0
Обработчик события
    #32104653
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, озадачил :-))
А как думаете , должно быть известно , какую функцию должна выполнять эта кнопка ,То есть обрабатоваемая функция должна быть ?
Если нет, так и не зачем его создавать.
А если да , то и пишем код обработки.
Проясните , на что намекаете . :-))
...
Рейтинг: 0 / 0
Обработчик события
    #32104660
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, озадачил :-))
А как думаете , должно быть известно , какую функцию должна выполнять эта кнопка ,То есть обрабатоваемая функция должна быть ?
Если нет, так и не зачем его создавать.
А если да , то и пишем код обработки.
Проясните , на что намекаете . :-))
...
Рейтинг: 0 / 0
Обработчик события
    #32104699
Kilroy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а если надо написать "визуальный дизайнер" форм?
Пользователь, к примеру, создает на форме кнопку, а потом выбирает из
списка объектов объект и его метод, который должен вызываться по нажатию кнопки. Одно из решений - использование указателей на ф-ции, если идти
дальше - напрашивается реализация в программе модели событий.
Советую почитать статью на www.rsdn.ru - события в С++
...
Рейтинг: 0 / 0
Обработчик события
    #32104713
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По вашему ничего нового я не вижу.
Но вы тоже выбираете функцию из списка изначально известных.
А выброс какого сигнала тоже изначально известна, так как выбираеться элемент опять из изначально заданного списка .

А Читать всегда полезно . Сейчас почитаю. Мнение напишу здесь.
...
Рейтинг: 0 / 0
Обработчик события
    #32105747
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да обсолютно ничего нового.
В приведенном примере идентификатор связали с функцией, независимо от будущего создоваемого элемента.
А в этой функции можно организовать вызов необходимой ( тоже можно выбрать из заданного списка ) функции.
После создания элемента, он связываеться с идентификатором.
Таким образом - в процессе выполнения элементу сопосталяеться функция.
Единственное - что в карте сообщений мы задали конкретное событие от идентификатора. То есть ограничили себя семейством элементов.

В данном случае , так как вопрос идет о кнопках , проблем не вижу.
Это чистая динамическая генерация элемента !
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обработчик события
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]