シンプルなOCXファイル作成


時代は、オブジェクト指向から、コンポーネント指向へと移り変わって来ています。 VCでは、MFC、ATL、BaseCtlの3通りの開発手段が用意されていますが、実行ファイルのサイズや実行効率を考えると、 ATLが一番優れていると思われます。そこで、ATLを使って簡単にOCXファイルを作成し、VBで簡単に試す例を示してみましょう。 ActiveXという言葉だけで難しく感じてしまっている人も多いようですが、使ってみると、意外に簡単であることに気づくでしょう。
VCでは可能だがVBやWSHでは実現困難な技術、例えば、関数へのポインタを使うWindowsAPIのコール、 インラインアセンブラによるCPU操作、仮想デバイスドライバが必要な処理なども、OCX化で技術的には実現可能となります。 がんばれば、グローバルフック、CPUIDの表示、特殊レジスタの表示・設定、MMX命令の実行、仮想デバイスドライバの一覧表示、 ポートI/Oによるハードウェアの制御などなど「えっ?VBでこんなことまで出来ちゃうの!」と、驚かせることも充分可能なのです。

※Visual C(Ver.6)での作成手順
※ATLでプロジェクト作成                                    
・プロジェクト名 ComTest

※挿入―ATLオブジェクトの新規作成
・クラス名 Test1
・シンプルオブジェクトを選択
・アトリビュートでISupportErrorInfoにチェック

※プロパティの追加
・プロパティの種類 BSTR
・プロパティ名 Name
・パラメータなし

※メソッドの追加
・メソッド名 DispName
・パラメータ [out, retval]BSTR* bstrName

※メンバ変数の追加
・変数のタイプ CComBSTR
・変数名 m_name
・Privateを選択

※コンストラクタで変数の初期化
public:
CTest1()
{
    m_name = _T(""); // この処理を追加
}

※各プロパティ・メソッドの処理記述

STDMETHODIMP CTest1::get_Name(BSTR *pVal)
{
    *pVal = m_name; // この処理を追加
    return S_OK;
}

STDMETHODIMP CTest1::put_Name(BSTR newVal)
{
    m_name = newVal; // この処理を追加
    return S_OK;
}

STDMETHODIMP CTest1::DispName(BSTR *bstrName)
{
    // この処理を追加
    CComBSTR msg;
    msg = _T("The Name is ");
    msg.Append(m_name);
    *bstrName = msg.Copy();
    return S_OK;
}


※Visual BASIC(Ver.6)での動作確認手順
※VBで動作確認
・標準EXEのプロジェクト作成
・プロジェクト―参照設定で[ComText 1.0タイプライブラリ]にチェック
・以下のような処理を記述
Dim aaa As New Test1

aaa.Name = "T.Ohta"
Debug.Print aaa.DispName()


戻る