○簡単なActiveX.DLLの作成

@適当な名前を付けて新しいプロジェクトを作成します


Aそのまま完了を押します


Bメニューのプロジェクト→クラスの追加にて、ATLシンプルオブジェクトを開きます


Cウィザードが表示されますので適当な名前(test)を入力して完了ボタンを押します


DクラスビューのItestを選択し右クリックにてプロパティの追加を選択します。


Eメソッド追加ウィザードが表示されますので適当なメソッド名(str)を入力して、
プロパティーの種類にBSTRを選択して完了を押します



Ftest.cppに以下のコードが生成されています

STDMETHODIMP Ctest::get_str(BSTR* pVal)
{
	// TODO: ここに実装コードを追加してください。

	return S_OK;
}

STDMETHODIMP Ctest::put_str(BSTR newVal)
{
	// TODO: ここに実装コードを追加してください。

	return S_OK;
}

G生成されたコードをカスタマイズします
put_strにて文字列を入力してget_strにて”テスト”という文字列を付けて返すようにします。

CComBSTR cbstr;

STDMETHODIMP Ctest::get_str(BSTR* pVal)
{
	cbstr.Append(_T("テスト"));
	*pVal=cbstr.Copy();
	return S_OK;
}

STDMETHODIMP Ctest::put_str(BSTR newVal)
{
	cbstr=newVal;
	return S_OK;
}


Hビルドして完成です

I作成したコンポーネントをVBで呼び出す
	参照設定にて参照します

	Dim obj As New first.CtestClass()
	obj.str = "いなば"
	Dim pos As String = obj.str
	Debug.WriteLine(pos)

結果
	いなばテスト


■二つの値を入力できて、値を返すメソッドの作成

@クラスビューのItestを選択し右クリックにてメソッドの追加を選択します


Aメソッド名、パラメータ一覧、パラメータ名を入力し、追加ボタンを押しながらメソッドの形を作ってゆきます



B生成されたコードを編集します
入力された値の a に 1 を足して b に返すという処理です。

STDMETHODIMP Ctest::add(LONG* a, LONG* b)
{
	long i=*a;
	i++;
	*b=i;

	return S_OK;
}



▲トップページ > Windows と C++