OCXのプロパティ – プログラミング – Home

通知
すべてクリア

[解決済] OCXのプロパティ


とも
 とも
(@とも)
ゲスト
結合: 23年前
投稿: 65
Topic starter  

はじめまして。「とも」と申します。

早速ですが質問させていただきます。

現在開発中のOCXは1つのプロパティを公開しています。
外部プロパティ名は AnaData
AnaDataは long 型です。
プロパティ取得/設定メソッドを使用し、
そのメソッド名はそれぞれ GetAnaData, SetAnaDataとしています。
つまり、
long GetAnaData();
void SetAnaData(long nNewValue);
となります。

このOCXをVCで作成した別のEXEに組み込みます。
EXEからOCXのプロパティを参照/設定する場合、
XXX.GetAnaData(); //XXXはOCX変数
XXX.SetAnaData(100);
のような形になります。

これを
i = XXX.AnaData; //取得の場合(iはlong型)
XXX.AnaData = 100; //設定の場合
のような形にすることは可能でしょうか?

開発環境
Visual C++ 6.0 SP6
Windows XP Pro SP2

以上、宜しく御願い致します。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

__declspec(property(get=GetAnaData, put=SetAnaData}) ) AnaData;
てな感じでかければできるのですけど、、、
http://msdn.microsoft.com/library/ja/default.asp?
url=/library/ja/vclang/html/_langref_property.asp


返信引用
とも
 とも
(@とも)
ゲスト
結合: 23年前
投稿: 65
Topic starter  

お世話になります。ともです。
Blue様 早速のご回答有難う御座います。
大変参考になりました。

助言を元に試してみました。

コンテナ側(EXE側)で対応するには、
OCXの ラップ クラスのpublicに
__declspec(property(get=GetAnaData, put=SetAnaData}) ) long AnaData;
のようなコードを追加したところ、所望の結果が得られました。
ただ、
// Microsoft Visual C++ によって自動生成された IDispatch ラップ クラス

// メモ: このファイルの内容を編集しないでください。 このクラスが再度
// Microsoft Visual C++ で生成された場合、変更を上書きします。
のような注意書きがあり、果たして追加方法はこれで間違いがないのか不安なところで
す。

上記はコンテナ側で対応しましたが、
OCX側で対応することは可能でしょうか?


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

無理っす。
OCXにはプロパティ機構がありますが、C++にはないので、VBから利用した場合に
XXX.AnaData
でアクセスできるようにすることはできますが、C++からだと、
XXX.get_AnaData()
XXX.put_AnaData( 100 );
みたいに、今よりカッコ悪くなると思います。


返信引用
とも
 とも
(@とも)
ゲスト
結合: 23年前
投稿: 65
Topic starter  

シャノン様

お世話になります。ともです。
回答ありがとうございます。

XXX.AnaData = 100
のような形式はコンテナ側の機能であり、
OCX側で対応することではないようですね。


返信引用
とも
 とも
(@とも)
ゲスト
結合: 23年前
投稿: 65
Topic starter  

チェックし忘れました。
アドバイスしてくださったBlue様, シャノン様ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました