
![]() |
| 最終更新日:2000/03/02 |
| 目次 |
| 1.VBで、「ActiveXDLL」を作る | PAGETOP |
◎プロジェクト名とクラス名を考えて、処理を追加する
| プロジェクト名: | AxVB |
| クラス名: | MyClass |
| クラスの関数: | Sub Version() バージョンメッセージを表示する |
◎コンパイルしてAxVB.DLLを作る。
|
2.レジストリーに登録する | PAGETOP |
レジストリーにDLLが登録されていない場合は、手動で登録する必要があります。

アンレジストするには、/u オプションをつけます。

|
3.VBから呼び出す | PAGETOP |
VBから、作った"AxVB.DLL"のクラスメソッドを呼び出してみます。
Option Explicit
Private Sub Command1_Click()
Dim Obj As Object
'AxVB.DLLのクラスオブジェクトを取得する
Set Obj = CreateObject("AxVB.MyClass")
'メソッドを呼び出す
Obj.Version
'メモリー開放
Set Obj = Nothing
End Sub
|
うまく呼び出せない場合、「プロジェクト」「参照」で「AxVB」があるか確認してみてください。
表示がない場合は、2.のレジスト登録をしてください。
|
4.VCから呼び出す | PAGETOP |
◎MFC APPウィザードでダイアログアプリケーションを作る

◎ダイアログにボタンハンドラを追加する
◎AxVB(VBのActiveXDLL)の新規クラスを作成する
「表示」「クラスウィザード」をだす。
「クラスの追加(L)」タイプライブラリーから、AxVB.DLLのファイル名を指定する。


クラスウィザードは、自動でCOleDispatchDriverから派生されたクラスをプロジェクトに
追加してくれます。
◎作成されたクラスを用いて、ボタンクリックハンドラを記述する
//////////////////////////////////////////////////////////////////////////
// AxVBを呼び出すテスト
#include "AxVb.h"
void CTestDlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
_MyClass Obj; //宣言
//IDispatchオブジェクトを作成して、結び付けます。
if( !Obj.CreateDispatch( _T("AxVB.MyClass") ) )
{
AfxMessageBox("IDispatch接続に失敗しました");
return;
}
// メソッドの呼び出し
Obj.Version();
}
|
◎アプリケーションの最初にOLEの初期化コードを忘れず追加する。
CTestApp(CWinApp)のInitInstance()でOLEの初期化コードを追加しておきます。
BOOL CTestApp::InitInstance()
{
// OLEの初期化
if(!AfxOleInit())
{
AfxMessageBox("OLEの初期化に失敗しました。");
return FALSE;
}
// -- 略 --
}
|
◎コンパイルして実行する
◎エラーが出る場合
「Dispatch接続に失敗しました」とメッセージされる場合は、
レジストされていない場合があります。2.のようにレジストしてみてください。