Здравствуйте leonkiller, Вы писали:
L>Например я сделал в проге добавление пункта меню
L>CMenu::InsertItemMenu(...)
L>Внимание вопрос?
L>Как на него навесить обработку событий
в общих чертах так — когда добавляешь пункт меню для него назначается идентификатор, обычно задаешь начало диапазона ID_FIRST и конец ID_LAST, а потом каждый новый пункт это ID_FIRST++, одновременно с добавлением пункта меню добавляешь его обработчик в массив обработчиков.
в карте сообщений будет что-то типа
ON_COMMAND_RANGE( ID_FIRST, ID_LAST, OnCommandRange )
в void OnCommandRange( UINT nID ) вычисляешь нужный индекс nID — ID_FIRST и вызываешь соответствующий обработчик из массива.
Например я сделал в проге добавление пункта меню
CMenu::InsertItemMenu(...)
Внимание вопрос?
Как на него навесить обработку событий
Или если это не элемент меню, а например я динамически из проги (тоесть не заранее определяю объект а создаю его в процессе выполнения программы) создаю текстовое поле в диалоговом окне, или еще что-нибудь, как зделать для таких объектов реакцию на событие
Здравствуйте leonkiller, Вы писали:
L>Например я сделал в проге добавление пункта меню
L>CMenu::InsertItemMenu(...)
L>Внимание вопрос?
L>Как на него навесить обработку событий
L>Или если это не элемент меню, а например я динамически из проги (тоесть не заранее определяю объект а создаю его в процессе выполнения программы) создаю текстовое поле в диалоговом окне, или еще что-нибудь, как зделать для таких объектов реакцию на событие
Повтори то что делает Колдун
В H файле
afx_msg void OnMyCommand();
В CPP файле
ON_COMMAND(ID_MYCOMMAND, OnMyCommand)
void MyClass::OnMyCommand()
{
}
Odi$$ey спасибо, хороший вариант.
Но вот вопрос, а если я незнаю возможное количество,
может быть можно событие какнибудь совсем динамически прописать.
Тоесть чтобы можно было обойтись без макросов:
BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd)
...
END_MESSAGE_MAP()