COleServerDoc::OnExecOleCmd
更新 : 2007 年 11 月
特定のコマンドを実行するため、またはコマンドのヘルプを表示するために、フレームワークによって呼び出されます。
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