System.Messaging.TMessageManager.SubscribeToMessage

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

function SubscribeToMessage(const AMessageClass: TClass; const AListener: TMessageListener): Integer; overload;
function SubscribeToMessage(const AMessageClass: TClass; const AListenerMethod: TMessageListenerMethod): Integer; overload;

C++

int __fastcall SubscribeToMessage(const System::TClass AMessageClass, const _di_TMessageListener AListener)/* overload */;
int __fastcall SubscribeToMessage(const System::TClass AMessageClass, const TMessageListenerMethod AListenerMethod)/* overload */;

Propriétés

Type Visibilité  Source Unité  Parent
function public
System.Messaging.pas
System.Messaging.hpp
System.Messaging TMessageManager


Description

Abonne un écouteur à un message.

Appelez SubscribeToMessage pour abonner les méthodes de gestion des messages à des types spécifiques de messages dans un gestionnaire de messages.

Pour désabonner une méthode précédemment abonnée d'un type de message, appelez Unsubscribe.

Exemple

L'exemple ci-dessous indique comment désabonner une méthode anonyme. L'exemple abonne la méthode anonyme aux messages contenant une chaîne Unicode. Quand un message de ce type est envoyé au gestionnaire de messages, la méthode anonyme affiche une zone de dialogue affichant la chaîne du message.

Dans Delphi :

// var SubscriptionId: Integer;
SubscriptionId := MessageManager.SubscribeToMessage(TMessage<UnicodeString>, procedure(const Sender: TObject; const M: TMessage)
begin
  ShowMessage((M as TMessage<UnicodeString>).Value);
end);

Dans C++ :

1. Définissez une méthode de votre classe avec la signature suivante :
void __fastcall TForm1::ShowReceivedMessage(System::TObject* const Sender, System::Messaging::TMessage* const M)
{
  TMessage__1<UnicodeString>* Message = dynamic_cast<TMessage__1<UnicodeString>*>(M);
  if (Message)
    ShowMessage(Message->Value);
}
2. Puis abonnez cette méthode comme suit :
TMessageManager* MessageManager = TMessageManager::DefaultManager;
TMetaClass* MessageClass = __classid(TMessage__1<UnicodeString>);
TMessageListenerMethod ShowReceivedMessagePointer = &(this->ShowReceivedMessage);
int SubscriptionId = MessageManager->SubscribeToMessage(MessageClass, ShowReceivedMessagePointer);

Voir aussi