うまく説明できなくてすみません。
> OCXはATLですかMFCですか?
OCXは、MFCです。
> [ClassWizard]の[ActiveX イベント]でイベントの
> 追加じゃ駄目なんでしょうか?
私も最初は上記方法でやってみました。
しかし、以前のOCXでビルドしたアプリが新しく追加
したイベントが発生したときに固まってしまいました。
で、いろいろな書籍等を調べていくと、”一度公開し
たインターフェイスには新しくメソッド等は追加して
はいけない”という事が書いてありました。そして
”追加する際にはGUIDを新しく取得し、別のインター
フェイスを準備しなければならない”とまでは書いて
あるのですが、実際の方法が書いてありませんでした。
試しに、ODLファイルを下記のように書き換えてました。
そしたらうまく動作してくれたのですが、ほとんど勘で
やってしまったので、自信がありません。
ちゃんとした方法を知っていませんか?
[ uuid(670D270B-7100-0003-0004-00400540871A),
helpstring("Event interface for FmCtrl Control") ]
dispinterface _DFmCtrlEvents
{
methods:
//{{AFX_ODL_EVENT(CVTL4FormCtrlCtrl)
[id(1)] void OnPopup(BSTR Filter);
[id(2)] void OnSearch();
//}}AFX_ODL_EVENT
};
// ↓ バージョンアップのため追加
[ uuid(8748BEA0-900E-1100-9500-0000F4ADBEC3),
helpstring("Event interface for FmCtrl Control") ]
dispinterface _DFmCtrlEvents2
{
methods:
//{{AFX_ODL_EVENT(CVTL4FormCtrlCtrl)
[id(1)] void OnPopup(BSTR Filter);
[id(2)] void OnSearch();
[id(3)] void OnNext(); // ← 新しく追加したいイベント
//}}AFX_ODL_EVENT
};
// ↑ バージョンアップのため追加したところ
[ uuid(670D270C-7100-1100-A314-00400540871A),
helpstring("FmCtrl Control"), control ]
coclass FmCtrl
{
[source] dispinterface _DFmCtrlEvents;
[default, source] dispinterface _DFmCtrlEvents2;
};
> OCXはATLですかMFCですか?
OCXは、MFCです。
> [ClassWizard]の[ActiveX イベント]でイベントの
> 追加じゃ駄目なんでしょうか?
私も最初は上記方法でやってみました。
しかし、以前のOCXでビルドしたアプリが新しく追加
したイベントが発生したときに固まってしまいました。
で、いろいろな書籍等を調べていくと、”一度公開し
たインターフェイスには新しくメソッド等は追加して
はいけない”という事が書いてありました。そして
”追加する際にはGUIDを新しく取得し、別のインター
フェイスを準備しなければならない”とまでは書いて
あるのですが、実際の方法が書いてありませんでした。
試しに、ODLファイルを下記のように書き換えてました。
そしたらうまく動作してくれたのですが、ほとんど勘で
やってしまったので、自信がありません。
ちゃんとした方法を知っていませんか?
[ uuid(670D270B-7100-0003-0004-00400540871A),
helpstring("Event interface for FmCtrl Control") ]
dispinterface _DFmCtrlEvents
{
methods:
//{{AFX_ODL_EVENT(CVTL4FormCtrlCtrl)
[id(1)] void OnPopup(BSTR Filter);
[id(2)] void OnSearch();
//}}AFX_ODL_EVENT
};
// ↓ バージョンアップのため追加
[ uuid(8748BEA0-900E-1100-9500-0000F4ADBEC3),
helpstring("Event interface for FmCtrl Control") ]
dispinterface _DFmCtrlEvents2
{
methods:
//{{AFX_ODL_EVENT(CVTL4FormCtrlCtrl)
[id(1)] void OnPopup(BSTR Filter);
[id(2)] void OnSearch();
[id(3)] void OnNext(); // ← 新しく追加したいイベント
//}}AFX_ODL_EVENT
};
// ↑ バージョンアップのため追加したところ
[ uuid(670D270C-7100-1100-A314-00400540871A),
helpstring("FmCtrl Control"), control ]
coclass FmCtrl
{
[source] dispinterface _DFmCtrlEvents;
[default, source] dispinterface _DFmCtrlEvents2;
};