FANTOM181 |
Отправлено: 07.03.2006, 12:25 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
У меня в проекте есть две формы Form1 и Form2. Соответсвенно в Unit1.h описан класс формы (Form1), а в Unit2.h — Form2. Я в класс формы1 поместил BEGIN_MESSAGE_MAP, чтобы отловить некое событие (какое событие неважно, т.к. оно не влияет на суть вопроса). Выглядит это следующим образом:
CODE |
class TForm1 : public TForm
{
__published:
.
.
.
.
private:
.
.
.
public:
.
.
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_ACTIVATEAPP, TMessage, RedrawTimer_Start_Stop)
END_MESSAGE_MAP(TForm)
};
|
Но проблемма в том что событиие, которое описано в BEGIN_MESSAGE_MAP возникает как для формы1 так и для формы2. А мне нужно чтобы событие отслеживалось только для формы1. Как это сделать!!
Я пробовал написать так вместо END_MESSAGE_MAP(TForm) написать END_MESSAGE_MAP(TForm1), но при компиляции мне выдается ошибка (следовательно делать нужно как то по другому). Вопрос как???
И еще один вопрос какое событие возникает при развертывании формы?
Отредактировано FANTOM181 — 07/03/2006, 12:33 |
|
olegenty |
Отправлено: 07.03.2006, 13:02 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
событие не возникает в двух формах, оно просто возникает. и помещается в очередь. далее, каждая форма проверяет, есть ли ей чем его обработать, и если есть — обрабатывает (передавая, либо не передавая сообщение дальше по цепочке).
|
|
poland |
Отправлено: 07.03.2006, 13:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Посмотри внимательно чего ты накатал в Unit2.h. Д.б.
CODE |
class TForm2 : public TForm
{
// и никакого BEGIN_MESSAGE_MAP
}; | |
|
Guest |
Отправлено: 07.03.2006, 15:16 |
|
Не зарегистрирован
|
Хорошо по поводу BEGIN_MESSAGE_MAP понятно. А какое событие возникает при свертывании/развертываниии формы? |
|
olegenty |
Отправлено: 07.03.2006, 15:26 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
WM_SYSCOMMAND
|
|
FANTOM181 |
Отправлено: 07.03.2006, 18:21 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
Спасибо за помощь! |
|