ソフト開発塾

VC.OCXのデフォルトプロパティ

VB アプリケーションでのオートメーション オブジェクトのデフォルトプロパティを設定したい

質問内容

VC.OCXのデフォルトプロパティ

VCでOCXを作成して、VBで使うような場合で、
VBのTEXTBOXのように

Text1="文字列"

とやったら自動的にText1.Textプロパティに値が入るような
設定を自作のOCXでもやりたいのですが、どう定義すればよいので
しょうか?

回答

DISP_DEFVALUEを使用します。

ヘルプにあるように

DISP_DEFVALUE( theClass, pszName )

theClass クラス名。
pszName オブジェクトの "値" を表すプロパティの外部名。

となっていますが、どこに、記述するのでしょう?

BEGIN_DISPATCH_MAPとEND_DISPATCH_MAPの間でいいようです。

OCXを作成するを例にしてみると

BEGIN_DISPATCH_MAP(CC0121CCtrl, COleControl)
    //{{AFX_DISPATCH_MAP(CC0121CCtrl)
    DISP_PROPERTY_EX(CC0121CCtrl, "MOJI", GetMOJI, SetMOJI, VT_BSTR)
    //}}AFX_DISPATCH_MAP
    DISP_FUNCTION_ID(CC0121CCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()
BEGIN_DISPATCH_MAP(CC0121CCtrl, COleControl)
    //{{AFX_DISPATCH_MAP(CC0121CCtrl)
    DISP_PROPERTY_EX(CC0121CCtrl, "MOJI", GetMOJI, SetMOJI, VT_BSTR)
    //}}AFX_DISPATCH_MAP
    DISP_FUNCTION_ID(CC0121CCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
    DISP_DEFVALUE(CC0121CCtrl,"MOJI")
END_DISPATCH_MAP()

となる、様です。

どうでしょうか?


ソフト開発塾 リンク集へ

--- KONDO-NET.GR.JP ---
今日のアクセス人目