リモートインスタンスにアクセスするにはリモートインスタンスにアクセスするにはオブジェクト管理インスタンス(ロードモジュールにつき、一つ存在)に 対して要求すると、アクセスしたいリモートインスタンスを取得することができます。
アクセスしたいオブジェクトを取得は、次の様に行います。
#include "WSCbaseList.h" //WSGIappObjectList() にアクセスする...
#include "WSCRbase.h" //仮想リモートインスタンスクラスを使用
...
void event_procedure(WSCbase* object){
//オブジェクト管理による WSCRbase ポインタの取得
char* obj_name = "newvlab_001"; //newvlab_001 という名称のリモートインスタンス
WSCRbase* rinstance = WSGIappObjectList()->getRemoteInstance(obj_name);
//仮想リモートインスタンスによるリモートインスタンスに対するアクセス
rinstance->setProperty(WSNlabelString,"HELLO WORLD");
rinstance がリモートインスタンスにアクセスするための
仮想リモートインスタンスです。
リモートインスタンスのオブジェクト名称を引数にします。
通常のインスタンス(オブジェクト)にアクセスするのと同じように、
仮想リモートインスタンスを通して、リモートインスタンスにアクセスします。
リモートインスタンスをキャストするにはオブジェクト管理を通して得られた仮想リモートインスタンスは 通常のオブジェクトと同じようにオリジナルのクラスにキャストして 使用することが出来ます。 オリジナルクラスに存在するメソッドを利用する場合にキャストします。 次の例は、WSClist::addItem() を呼び出すため、 WSCRbase 型の仮想リモートインスタンスから、 WSCRlist 型の仮想リモートインスタンスにキャストしています。
#include "WSCbaseList.h" //WSGIappObjectList() にアクセスする...
#include "WSCRlist.h" //仮想リモートインスタンスクラスを使用
...
void event_procedure(WSCbase* object){
//オブジェクト管理による WSCRbase ポインタの取得
char* obj_name = "newlist_001"; //newlist_001 という名称のリモートインスタンス
WSCRbase* rinstance = WSGIappObjectList()->getRemoteInstance(obj_name);
//仮想リモートインスタンスをオリジナルのクラス WSClist に対応する
//仮想リモートクラス WSCRlist にキャスト。
WSCRlist* rlist = (WSCRlist*)rinstance->cast("WSCRlist");
if (rlist == NULL){
//WSCRlist クラスではない。
return;
}
//WSClist クラスのメソッドを WSCRlist 仮想リモートインスタンスクラスを
//通して呼び出す。
rlist->addItem("item..");
Document Release 3.00 For Use with Wide Studio Release 3.00, Summper 2002
|