Zdarzenia i komunikaty
3.08.1999
  • Wysyłanie komunikatów definiowanych przez użytkownika i odpowiadanie na nie.

      Krok 1: Dodaj #define dla komunikatu użytkownika do pliku nagłówkowego klasy, która ma odpowiadać na ów komunikat.

    #include <vcl\Classes.hpp>
    #include <vcl\Controls.hpp>
    #include <vcl\StdCtrls.hpp>
    #include <vcl\Forms.hpp>

    #define  UM_SPECIALMESSAGE (WM_USER + 1001)
    // komunikaty użytkownika to WM_USER + jakaś wartość
      Krok 2: Dodaj mapę komunikatu i deklarację funkcji, która będzie odbierać ten komunikat.
    private:     // User declarations
        void __fastcall UMSpecialMessage(TMessage &Message);
    public:      // User declarations
        __fastcall TForm1(TComponent* Owner);

    BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(UM_SPECIALMESSAGE,TMessage,UMSpecialMessage)
    END_MESSAGE_MAP(TForm)
      Krok 3: Wpisz kod funkcji. Ta funkcja po prostu wyda pisk.
void __fastcall TForm1::UMSpecialMessage(TMessage &Message)
      {
          MessageBeep(MB_ICONEXCLAMATION);
      }
      Krok 4: Jeżeli chcesz wysłać komunikat, użyj SendMessage, PosMessage lub Perform.
// SendMessage i Perform wysyłają komunikat bezpośrednio do okna
// programu, PostMessage dodaje komunikat do kolejki komunikatów
// i nie będzie on obsłużony dopóki aplikacja nie przechwyci
// go z kolejki.

SendMessage(Form1->Handle, UM_SPECIALMESSAGE,
                                  /*WPARAM*/ 0, /*LPARAM*/ 0);
PostMessage(Form1->Handle, UM_SPECIALMESSAGE,
                                  /*WPARAM*/ 0, /*LPARAM*/ 0);
Perform(UM_SPECIALMESSAGE, /* WPARAM */ 0, /* LPARAM */ 0);