このコールバックは、ユーザがプロパティ ページを操作するときに発生します。

このコールバックを使って、プロパティ ページ上のユーザ インターフェイスのイベントを処理します。 このコールバックは、ユーザが次のいずれかの操作を行うと発生します。

また、このコールバックは、プロパティ ページを開いたり、パラメータ値を変更するスクリプト コードによってトリガーされることもあります。

警告: このコールバックは、C# のみのオブジェクト モデルで使用できます。 スクリプトには、オブジェクト モデルの各 PPG イベントに個別のコールバックがあります。 スクリプト コールバックには入力引数がないため、代わりにグローバル PPG オブジェクトを使用することで、プロパティ ページのコントロールとレイアウトにアクセスできます。


C++ および C# のカスタム プロパティ


public class <property_name>


	public bool PPGEvent( Context in_context )




CStatus <property_name>_PPGEvent( CRef& in_context )




<property_name> は、PluginRegistrar.RegisterProperty の呼び出しで指定されている名前です。この名前に含まれるスペースはアンダースコアに置き換えられます。 たとえば、My Property という名前のプロパティを登録する場合、コールバック関数の名前の先頭は My_Property になります。


パラメータ 言語 タイプ 説明
in_context C# PPGEventContext PPGEventContext オブジェクト。

PPGEventContext.EventID は、コールバックをトリガーしたイベントを識別します。

siOnInitsiOnClosesiTabChange、および siButtonClicked イベントの場合、PPGEventContext.SourceCustomProperty を返します。

siParameterChange イベントの場合、PPGEventContext.SourceParameter オブジェクトを返します。 CustomProperty を取得するには、ParameterSIObject.Parent プロパティを呼び出します。
C++ CRef& PPGEventContext へのリファレンス。

PPGEventContext::GetEventID は、コールバックをトリガーしたイベントを識別します。

siOnInitsiOnClosesiTabChange、および siButtonClicked イベントの場合、PPGEventContext::GetSourceCustomProperty を返します。

siParameterChange イベントの場合、PPGEventContext::GetSourceParameter オブジェクトを返します。 Parameter::GetParent から CustomProperty を取得できます。


属性 詳細
Button siButtonClicked イベントの場合、クリックされたボタンの名前を指定します。
Close True に設定すると、プロパティ ページは強制的に閉じます。
Refresh True に設定すると、プロパティ ページのレイアウトは強制的に更新されます。
Tab siTabChange イベントの場合、クリックされたタブの名前を指定します。

// PPGEvent callback generated by the Custom Property Wizard

SICALLBACK MyCppProperty_PPGEvent( const CRef& in_ctxt )


 // This callback is called when events happen in the user interface

 // This is where you implement the "logic" code.

 // If the value of a parameter changes but the UI is not shown then this

 // code will not execute.  Also this code is not re-entrant, so any changes

 // to parameters inside this code will not result in further calls to this function

 Application app ;

 // The context object is used to determine exactly what happened

 // We don't use the same "PPG" object that is used from Script-based logic code 

 // but through the C++ API we can achieve exactly the same functionality.

 PPGEventContext ctxt( in_ctxt ) ;

 PPGEventContext::PPGEvent eventID = ctxt.GetEventID() ;

 if ( eventID == PPGEventContext::siOnInit )


     // This event meant that the UI was just created.

     // It gives us a chance to set some parameter values.

     // We could even change the layout completely at this point.

     // For this event Source() of the event is the CustomProperty object

     CustomProperty prop = ctxt.GetSource() ;

     app.LogMessage( L"OnInit called for " + prop.GetFullName() ) ;

     /* If you regenerate the layout then call this:




 else if ( eventID == PPGEventContext::siOnClose )


     // This event meant that the UI was just closed by the user.

     // For this event Source() of the event is the CustomProperty object

     CustomProperty prop = ctxt.GetSource() ;

     app.LogMessage( L"OnClose called for " + prop.GetFullName() ) ;


 else if ( eventID == PPGEventContext::siButtonClicked )


     // If there are multiple buttons

     // we can use this attribute to figure out which one was clicked.

     CValue buttonPressed = ctxt.GetAttribute( L"Button" ) ;

    app.LogMessage( L"Button pressed: " + buttonPressed.GetAsText() ) ;


 else if ( eventID == PPGEventContext::siTabChange )


     // We will be called when the PPG is first opened

     // and every time the tab changes

     // Retrieve the label of the tab that is now active

     CValue tabLabel = ctxt.GetAttribute( L"Tab" ) ;

     app.LogMessage( L"Tab changed to: " + tabLabel .GetAsText() ) ;


 else if ( eventID == PPGEventContext::siParameterChange )


     // For this event the Source of the event is the parameter

     // itself

     Parameter changed = ctxt.GetSource() ;

     CustomProperty prop = changed.GetParent() ;

     CString   paramName = changed.GetScriptName() ; 

     app.LogMessage( L"Parameter Changed: " + paramName ) ;


 return CStatus::OK ;