OCXインターフェース

第0.43版 2016年10月23日
第0.03版 1996年 5月 3日

ここでは、おもにOCXの埋め込みに関するインターフェースの説明をします。
OLEオートメーションにいては言語仕様の方を合わせてご参照ください。

ocx al_ocx("pre_create", progID, visible, subStgID);

OCXオブジェクトを作成しますが、この関数を実行した段階では
OCXオブジェクトの実体はまだ作成されてはいません。
引数:
string progIDはOCXの識別子です。
アニメーションボタンでは"AniBtn.AniPushButton"がこれに値します。
list visibleは、作成されたOCXオブジェクトの可視性を指定します。
string subStgIDは、OCXのプロパティをストーレジにセーブする際の
サブストレージIDです。このサブストーレジIDはユニークでなければなりません。

string al_ocx("progID", ocx, null, null);

OCXオブジェクトの識別子を返します。

string al_ocx("subStgID", ocx, null, null);

OCXオブジェクトのサブストーレジIDを返します。

list al_ocx("create", ocx, wnd, null);

この関数を実行した段階でOCXオブジェクトの実体がwindow型の引数wndで
指定されるウィンドウの左上隅に小さな大きさで作成されます。
戻り値:
null 正常終了
1 既にOCXの実体が作られている
2 OCXの作成に失敗

list al_ocx("is_created", ocx, null, null);

OCXオブジェクトの実体が作成されているかの問い合わせ関数です。
OCXオブジェクトの実体がまだ作成されていない場合はnullを
そうでない場合は非nullを返します。

list al_ocx("place", ocx, rect, null);

OCXオブジェクトのジオメトリを指定します。
OCXオブジェクトの実体が作成されていなければこの関数は無効です。
引数のrectにはウィンドウの左上隅を原点として
リストで(left, top, right, bottom)を指定します。
戻り値:
null 正常終了
1 ジオメトリが不正
2 OCXの実体が作成されていない

void al_ocx("visible", ocx, flag, null);

OCXオブジェクトの可視性を指定します。
OCXオブジェクトの実体が作成されていなければこの関数は無効です。
引数のflagには、可視にする場合は非nullを、非可視にする場合はnullを
入れます。

void al_ocx("destroy", ocx, null, null);

OCXオブジェクトの実体を破壊します。

list al_ocx("runtime_inbislbie", ocx, null, null);

OCXが、実行時に見えないOCXかの問い合わせ関数です。
実行時に見えないOCXなら非nullが返ります。

void al_ocx("mode", ocx, flag, null);

flagにnullを指定した場合、OCXをウィンドウ上のマウス操作で移動/リサイズ
できるモードにします。flagのデフォルト値は1です。

void al_ocx("prop_editor", ocx, null, null);

OCXが持っているプロパティエディタを立ち上げます。

void al_ocx("set_filename", ocx, filename, null);

OCXのプロパティをセーブ/ロードするストーレジの名前を指定します。

string al_ocx("get_filename", ocx, null, null);

OCXのプロパティをセーブ/ロードするストーレジの名前を返します。
指定されていなければnullが返ります。

list al_ocx("save", ocx, null, null);

設定されているストーレジのsubStgIDで指定されるサブストーレジへ
OCXのプロパティをセーブします。
戻り値:
null 正常終了
1 OCXの実体が作成されていない
2 サブストーレジのオープンに失敗
3 IUnknwonの取得に失敗
4 IPersistStorageの取得に失敗
5 Saveに失敗
6 SaveCompletedに失敗
10 ストーレジのオープンに失敗

OCXオブジェクトをシリアライズでセーブすると(progID, visible, subStgID)が
セーブされるとともに、ストーレジが設定されている場合は、そのストーレジの
stbStgIDで示されるサブストーレジにOCXのプロパティがセーブされます。

list al_ocx("load", ocx, null, null);

設定されているストーレジのsubStgIDで指定されるサブストーレジから
OCXのプロパティをロードします。
戻り値:
null 正常終了
1 OCXの実体が作成されていない
2 サブストーレジのオープンに失敗
3 IUnknwonの取得に失敗
4 IPersistStorageの取得に失敗
5 Loadに失敗
10 ストーレジのオープンに失敗

OCXオブジェクトをシリアライズでロードすると、OCXオブジェクトは
pre_createされた状態になります。

variant al_ocx("object", ocx, null, null);

OLEオートメーションをするためのIDispatchを持つvariant型のオブジェクトを
を生成して返します。
OCXの実体が作成されていないとnullが返ります。

variant al_ocx("Picture", dir, name, null);

OLEオートメーションに用いるビットマップを作成します。
引数string dirは画像ファイルのあるディレクトリを、nameには画像ファイルを
指定します。

al_ocx("callback", ocx, eventName, cb);

OCXにコールバック関数を指定します。
引数cbには(o, obj, func)の三つ組みを入れます。
funcはobjのvirtual関数で、void func(any o, array arg);の形を
している必要があります。funcの引数oには、三つ組みのoがそのまま渡されます。
funcの引数argはイベントの引数で、第n引数はarg[n-1]で得ることができます。
戻り値:
null 正常終了
1 コールバックの設定に失敗

al_ocx("unset_callback", ocx, null, null);

OCXに設定されているコールバック関数を解除します。

window al_ocx("wnd", ocx, null, null);

OCXオブジェクトを埋め込んだウィンドウを返します。
OCXの実体が作られていなければnullが返ります。

al_ocx("ocx_list", null, null, null);

レジストリを検索し、OCXのprogIDのリストを作成し、
グラフ形式のリストで返します。

al_ocx("z_order", ocx, to_top, null);

to_topがnullでないならOCXのウィンドウを一番手前に持ってきます。
to_topがnullならOCXのウィンドウを一番奥に持っていきます。