Разработка прикладных программ для ОС WINDOWS с помощью интегрированных сред Delphi / C++Builder. Баканов В.М. - 16 стр.

UptoLike

Составители: 

- 16 -
ходного кода (в базовом для Delphi языке Object Pascal подобная функцио-
нальность реализуется значительно проще, см. ниже)
// модуль U1_Mess_2.h
. . . . . . . . . . . . . .
#define WM_MyMessage WM_USER
. . . . . . . . . . . . . .
class TForm1: public TForm
{
. . . . .
private: // User declarations
void __fastcall OnMyPost(TMessage &Message);
public: // User declarations
__fastcall TForm(Tcomponent *Owner);
BEGIN_MESSAGE_MAP
. . . . .
MESSAGE_HANDLER(WM_MyMessage, TMessage, OnMyPost)
END_MESSAGE_MAP(TComponent)
};
// --------------------------------------------------------------------------------------------------------
// модуль U1_Mess_2.cpp
. . . . .
void __fastcall TForm1::OnMyPost(TMessage &mess)
{
Label1->Caption = ''Получено сообщение '' + IntToStr(mess.LParam);
}
Таким образом, обработка сообщений в WINDOWS происходит по сле-
дующей цепочке
событие MainWndProc WndProc Dispatch обработчик события
Например, С-оператор
PostMessage(Form2->Handle, WM_CLOSE, 0, 0);
передает окну формы Form2 сообщение WM_CLOSE, закрывающее это
окно. Оператор
PostMessage(FindWindow("TForm1", "Приложение_Primer_2",
WM_CLOSE, 0, 0);
передает аналогичное сообщение окну класса TForm1 с заголовком
Приложение_Primer_2 (используя WINDOWS API - функцию
FindWindow).
                                                          - 16 -


ходного кода (в базовом для Delphi языке Object Pascal подобная функцио-
нальность реализуется значительно проще, см. ниже)

// модуль U1_Mess_2.h
............. .
#define WM_MyMessage WM_USER
..............
class TForm1: public TForm
{
  .....
  private: // User declarations
      void __fastcall OnMyPost(TMessage &Message);
  public: // User declarations
      __fastcall TForm(Tcomponent *Owner);
    BEGIN_MESSAGE_MAP
    .....
      MESSAGE_HANDLER(WM_MyMessage, TMessage, OnMyPost)
    END_MESSAGE_MAP(TComponent)
};
// --------------------------------------------------------------------------------------------------------

// модуль U1_Mess_2.cpp
.....
void __fastcall TForm1::OnMyPost(TMessage &mess)
{
  Label1->Caption = ''Получено сообщение '' + IntToStr(mess.LParam);
}

   Таким образом, обработка сообщений в WINDOWS происходит по сле-
дующей цепочке

   событие → MainWndProc → WndProc → Dispatch → обработчик события

    Например, С-оператор

PostMessage(Form2->Handle, WM_CLOSE, 0, 0);

   передает окну формы Form2 сообщение WM_CLOSE, закрывающее это
окно. Оператор

PostMessage(FindWindow("TForm1", "Приложение_Primer_2",
           WM_CLOSE, 0, 0);

   передает аналогичное сообщение окну класса TForm1 с заголовком
Приложение_Primer_2      (используя  WINDOWS API    -    функцию
FindWindow).