Title
最終更新日:2000/03/02
目次

VBのActiveX DLL を利用する方法

  1. VBで、「ActiveXDLL」を作る
  2. レジストリーに登録する
  3. VBから呼び出す
  4. VCから呼び出す
  5. 文字列を利用する
サンプルプロジェクト(VB5,VC5プロジェクト)301KB LHA圧縮ファイル

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.のようにレジストしてみてください。


CopyRight(c)1999-2000, by T-maru
ご連絡はメールにて

GeoCities Japan