COleServerDoc::OnExecOleCmd
特定のコマンドを実行するため、またはコマンドのヘルプを表示するために、フレームワークによって呼び出されます。
virtual HRESULT OnExecOleCmd(
const GUID* pguidCmdGroup,
DWORD nCmdID,
DWORD nCmdExecOpt,
VARIANTARG* pvarargIn,
VARIANTARG* pvarargOut
);
パラメーター
pguidCmdGroup
コマンドのセットを指定する GUID へのポインター。 既定のコマンド グループを指定する場合は、NULL でもかまいません。nCmdID
実行するコマンド。 pguidCmdGroup で指定したグループのコマンドを指定します。nCmdExecOut
オブジェクトがコマンドを実行する方法。次に示す OLECMDEXECOPT 列挙型の 1 つ以上を指定します。OLECMDEXECOPT_DODEFAULT
OLECMDEXECOPT_PROMPTUSER
OLECMDEXECOPT_DONTPROMPTUSER
OLECMDEXECOPT_SHOWHELP
pvarargIn
コマンドの入力引数が入っている VARIANTARG へのポインター。 NULL の場合もあります。pvarargOut
コマンドから出力される戻り値を受け取る VARIANTARG へのポインター。 NULL の場合もあります。
戻り値
正常終了した場合は S_OK を返します。それ以外の場合は、以下のエラー コードのいずれかを返します。
値 |
説明 |
---|---|
E_UNEXPECTED |
予期しないエラーが発生しました。 |
E_FAIL |
エラーが発生しました。 |
E_NOTIMPL |
MFC 自身でコマンドを変換し、ディスパッチすることを示します。 |
OLECMDERR_E_UNKNOWNGROUP |
pguidCmdGroup は NULL 以外ですが、正しいコマンド グループを示していません。 |
OLECMDERR_E_NOTSUPPORTED |
nCmdID は pguidCmdGroup グループの有効なコマンドとして認識できません。 |
OLECMDERR_DISABLED |
nCmdID で指定されたコマンドは無効であり、実行できません。 |
OLECMDERR_NOHELP |
呼び出し元は nCmdID で指定されたコマンドのヘルプを要求しましたが、ヘルプが使用できません。 |
OLECMDERR_CANCELED |
ユーザーが実行をキャンセルしました。 |
解説
COleCmdUI を使用すると、DocObject ユーザー インターフェイス コマンドのその他のプロパティの有効化、更新、および設定を行うことができます。 コマンドの初期化を行うと、OnExecOleCmd で実行できます。
フレームワークは、OLE ドキュメント コマンドの変換およびディスパッチを行う前に、この関数を呼び出します。 標準 OLE ドキュメント コマンドを処理するために、この関数をオーバーライドする必要はありませんが、独自のカスタム コマンド、あるいはパラメーターまたは戻り値を持つコマンドを処理する場合は、この関数をオーバーライドする必要があります。
ほとんどのコマンドには引数または戻り値がありません。 ほとんどのコマンドでは、呼び出し元は pvarargIn と pvarargOut に NULL を渡すことができます。 入力値を必要とするコマンドでは、呼び出し元は変数 VARIANTARG を宣言して初期化を行い、その変数へのポインターを pvarargIn に渡します。 1 つの値を必要とするコマンドの場合は、VARIANTARG に直接引数を格納して、関数に渡すこともできます。 複数の引数の場合は、IDispatch や SAFEARRAY などのようなサポートされている型の 1 つを使用して、VARIANTARG に入れる必要があります。
同様に、コマンドが引数を返す場合、呼び出し元は VARIANTARG を宣言して、VT_EMPTY に初期化して、アドレスを pvarargOut で渡す必要があります。 コマンドが 1 つの値を返す場合、オブジェクトはその値を直接 pvarargOut に格納できます。 複数の出力値がある場合は、適切な方法で VARIANTARG に入れる必要があります。
この関数の基本クラスの実装では、コマンド ターゲットに対応する OLE_COMMAND_MAP 構造体を調べ、適切なハンドラーへコマンドをディスパッチします。 基本クラスの実装は、引数または戻り値がないコマンドに対してのみ機能します。 コマンドで引数を処理する場合、または戻り値を返す必要のある場合は、この関数をオーバーライドして pvarargIn パラメーターと pvarargOut パラメーターを独自に処理する必要があります。
必要条件
**ヘッダー:**afxole.h