System.Messaging.TMessageManager.SubscribeToMessage

提供: RAD Studio API Documentation
移動先: 案内検索

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 */;

プロパティ

種類 可視性 ソース ユニット
function public
System.Messaging.pas
System.Messaging.hpp
System.Messaging TMessageManager


説明

リスナをメッセージに登録します。

SubscribeToMessage を呼び出すと、メッセージ処理メソッドを、メッセージ マネージャ上のメッセージの特定のタイプに登録することができます。

あるメソッド タイプから、以前に登録したメソッドを登録解除するには、Unsubscribe を呼び出します。

以下の例では、無名メソッドを登録する方法を示しています。この例では、無名メソッドを Unicode 文字列を含むメッセージに登録します。このタイプのメッセージがメッセージ マネージャに送信されると、無名メソッドは、メッセージからの文字列を表示するダイアログ ボックスを表示します

Delphi の場合:

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

C++ の場合:

1. クラスにおいてメソッドを次のシグニチャで定義します:
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. そして、このメソッドを次のように登録します:
TMessageManager* MessageManager = TMessageManager::DefaultManager;
TMetaClass* MessageClass = __classid(TMessage__1<UnicodeString>);
TMessageListenerMethod ShowReceivedMessagePointer = &(this->ShowReceivedMessage);
int SubscriptionId = MessageManager->SubscribeToMessage(MessageClass, ShowReceivedMessagePointer);

関連項目