![]() | Programming Guide | WideStudio Index 目次 |
オブジェクトにアクセスするには
イベントプロシージャにおいて、オブジェクトにアクセスすることは、最も 基本的な事柄です。いろいろな場合における、オブジェクトへのアクセス方 法を説明します。
- プロシージャ関数に渡される引数によるアクセス
プロシージャ関数に渡される引数によるアクセスは、 イベントプロシージャが貼られているクライアントオブジェクト にアクセスする場合に利用します。- オブジェクト管理を利用したアクセス
イベントプロシージャが貼られているクライアントオブジェクト 以外の他のオブジェクトにアクセスする場合に利用します。- 外部変数による直接アクセス
イベントプロシージャが貼られているクライアントオブジェクト 以外の他のオブジェクトにアクセスする場合に利用します。 イベントプロシージャの移植性が低下します。プロシージャ関数に渡される引数によるアクセス
イベントプロシージャに渡される引数を利用すると、イベントプロシージャ が貼られているクライアントオブジェクトにアクセスすることができます。void event_procedure(WSCbase* object){ //オブジェクトへアクセス object->setProperty(WSNlabelString,"HELLO WORLD"); }object ポインタがそのクライアントに対する WSCbase* ポインタです。 WSCbase クラスのAPIを利用できますが、派生クラスのAPIを利用したい 場合は、クラスポインタの取得の節を参照下さい。オブジェクト管理を利用したアクセス
オブジェクト管理インスタンス(ロードモジュールにつき、一つ存在)に対し て要求すると、アクセスしたいオブジェクトを取得することができます。外 部変数アクセス(下記参照)の場合と異なり、コンパイル時にシンボルのリン クをを伴いません。したがって、画面の構成によらない柔軟なプログラムを 行うことができます。アクセスしたいオブジェクトの取得は、次の様に行います。
オブジェクト管理クラス インスタンス取得関数 WSCbaseList WSCbaseList* WSGIappObjectList() #include <WSCbaseList.h> //WSGIappObjectList() にアクセスする... ... void event_procedure(WSCbase* object){ //オブジェクト管理による WSCbase ポインタの取得(その1) char* class_name = "WSCvlabel"; //ラベルクラス char* obj_name = "newvlab_001"; //newvlab_001 という名称 WSCbase* obj = WSGIappObjectList()->getInstance(class_name,obj_name); //WSCbase* クラスポインタによるラベルに対するアクセス obj->setProperty(WSNlabelString,"HELLO WORLD"); //オブジェクト管理による WSCbase ポインタの取得(その2) char* class_name2 = "WSCbase"; //どのクラスかを特定しない char* obj_name2 = "newvlab_002"; //newvlab_002 という名称 WSCbase* obj2 = WSGIappObjectList()->getInstance(class_name2,obj_name2); //WSCbase* クラスポインタによるラベルに対するアクセス obj2->setProperty(WSNlabelString,"HELLO WORLD"); }obj もしくは obj2 がアクセスしたいオブジェクトです。クラス名称とオブ ジェクト名称を引数にします。もしクラス名を特定したくない場合は、 "WSCbase" を与えてください。この場合はすべてのオブジェクトが検索対象 となります。外部変数による直接アクセス
オブジェクトを外部変数参照定義すると、外部変数としてアクセスできます。 外部変数定義は、アプリケーションビルダユーザーズガイドの [外部変数として可能なオブジェクトとするには]の節を参照下さい。#include <WSCvlabel.h> //WSCvlabel クラスを直接触るので、インクルード。 ... void event_procedure(WSCbase* object){ //外部変数の extern 宣言 extern WSCvlabel* newvlab_001; //WSCvlabel* クラスの newvlab_001 に対するアクセス newvlab_001->setProperty(WSNlabelString,"HELLO WORLD"); }
Copyright(C) WideStudio Development Team, 1999-2004 | Last modified: May 25, 2004 |