394______________________________________________Глава 6

Например, вы можете определить в своем приложении константы

ftdefine WM_MyMessl WM_USER
ttdefine WM_MyMess2 WM_USER + 1

и затем оперировать с сообщениями WM_MyMessl и WM_MyMess2 как с предо-
пределенными в Windows. Например, можете вставить в карту сообщений объяв-
ление:

MESSAGE_HANDLER(WM_MyMessl, TMessage, On MyMessI)

В данном объявлении в качестве типа параметра использован тип TMessage.
Этот тип определяет следующую структуру:

struct TMessage
{

unsigned int Msg;

long WParam;

long LParam;

long Result;

};

Вы можете при посылке сообщения передавать параметрами WParam и Lpa-
ram любую необходимую информацию.

В качестве примера давайте добавим в нашем тестовом приложении PMessI на
форму Formi компонент CSpinEdit и кнопку, задав ей надпись Послание. В обра-
ботчик щелчка на этой кнопке мы хотим вставить посылку сообщения второму на-
шему приложению — PMess2, в котором в качестве кода послания передать число,
установленное пользователем в компоненте CSpinEdit.

Для того, чтобы сделать это, объявите в заголовочном файле UlMessl.h номер
вашего сообщения с именем, например, WM_MyPost:

ttdefine WM_MyPost WMJJSER
а в обработчик события щелчка на кнопке Послание вставьте оператор

SendMessage(FindWindow("TFormI","Приложение Pmess2"),WM MyPost,0,CSpin-
Editl->Value) ;

Вот и все! Сообщение будет посылаться. Можно было даже сделать проще: не
вводить константы, а просто в функции SendMessage указать вместо WM_MyPost
номер сообщения — WM_USER. Но с именем сообщения код читается проще.

Теперь осталось написать обработчик этого сообщения в приложении PMess2.
Это выглядит так же, как и для других обработчиков сообщений:

// модуль UlMess2.h

ttdefine WM_MyPost WM_USER

//———————————————————————-

class TFormI : public TForm
{

private:         // User declarations

void   fastcall OnMyPost(TMessages Message) ;

public:          // User declarations

fastcall TFormI(TComponent* Owner) ;

BEGIN_MESSAGE_MAP

MESSAGE_HANDLER(WM_MyPost, TMessage, OnMyPost)
END_MESSAGE_MAP(TComponent)
I;

//—————————————————————————-