|
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);
|