○簡単な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++