ソフト開発塾 |
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()となる、様です。
どうでしょうか?