System.Messaging.TMessageManager.SubscribeToMessage
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);
関連項目
- System.Messaging (Delphi)コード サンプル
- System.Messaging (C++)コード サンプル