この技術情報では、 ActiveX コントロールの詳細プロパティの実装に関するトピックについて説明します:
読み取り専用、書き込み専用プロパティ
プロパティから返されるエラー コード
読み取り専用、書き込み専用プロパティ
プロパティの追加ウィザードは、高速で簡単なメソッドをコントロールの読み取り専用または書き込み専用プロパティを実装するを提供します。
読み取り専用または書き込み専用プロパティを実装するには
コントロール プロジェクトを読み込んでください。
クラス ビューで、コントロールのライブラリ ノードを展開します。
ショートカット メニューを開くには、コントロール (ライブラリ ノードの 2 番目のノード)のインターフェイス ノードを右クリックします。
ショートカット メニューのをクリック 追加 は、 プロパティの追加をクリックします。
これは プロパティ追加ウィザードを開きます。
プロパティ名(O),プロパティ名 ボックスで、プロパティの名前を入力します。
Implementation Typeでは、をクリック Get/Set Methods。
プロパティの型,プロパティの種類,プロパティの種類(Y),プロパティ型 ボックスで、プロパティの適切な型を選択します。
読み取り専用プロパティが必要な場合は、集計関数の名前をオフにします。書き込み専用プロパティが必要な場合は、 Get 関数名をオフにします。
[完了] をクリックします。
この場合、プロパティの追加ウィザードは、標準セットの代わりにディスパッチ マップ エントリで関数 SetNotSupported か GetNotSupported を挿入したり、関数を取得します。
読み取り専用または書き込み専用にするために既存のプロパティを変更する場合は、ディスパッチ マップを手動で編集し、不要なセットを削除するか、コントロール クラスから関数を取得できます。
プロパティ (たとえば、)条件付きで読み取り専用または書き込み専用にする場合は、コントロールが特定のモードで実行している場合にのみ、設定を指定するか、または、標準の方法で取得できます。関数を適切な場合には SetNotSupported または GetNotSupported 関数を呼び出しますします。次に例を示します。
void CMyAxUICtrl::SetMyProperty(SHORT newVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (m_bReadOnlyMode) // some control-specific state
{
SetNotSupported();
}
else
{
m_iPropVal = newVal; // set property as normal
SetModifiedFlag();
}
}
このコード サンプルでは m_bReadOnlyMode のデータ メンバーが TRUE場合 SetNotSupported をダイヤルします。FALSEに新しい値が、プロパティ設定されます。
プロパティから返されるエラー コード
使用するを取得しようとしている間、またはプロパティを設定するには、パラメーターとして SCODE (ステータス コード)を受け取る COleControl::ThrowError の関数をエラーが発生することを示すこと。定義済み SCODE を使用するか、独自の 1 種類を定義できます。SCODEの定義済み秒の一覧と SCODEのカスタム秒の定義の方法については、技術情報の ActiveX コントロールの ActiveX コントロールでのエラー処理 を参照: 高度なトピック。
ヘルパー関数は COleControl::SetNotSupported、 COleControl::GetNotSupportedと COleControl::SetNotPermittedなどの SCODEの共通点によって定義された秒では、最もあります。
[!メモ]
ThrowError は、取得または集計関数またはオートメーション メソッドの内部プロパティからエラーを返すための手段としてのみ使用されるようになっています。これらは適切な例外ハンドラーがスタックにすることだけの場合です。
コードの他の領域のレポートの例外の詳細については、技術情報の ActiveX コントロールの COleControl::FireError および " " を参照してください ActiveX コントロールでのエラー処理 : 高度なトピック。