ActiveXについて--2


VC悩んだ人  2004-01-13 14:51:09  No: 53009  IP: [192.*.*.*]

VC++6.0でOCXを開発していますが、プロパティはboolean型の場合、このOCXを利用するフォームを設計するとき、OCXのboolean型プロパティに自動「true」と「false」の二つ選択項目をリストのかたちで表示されました。ただし、enum型のプロパティをつくりたいです。つまりOCXのプロパティに「1-left」「2-center」「3-right」のようなリストを表示したいですが、やりかたはよく分かりません。

ご存知の方がいれば、ぜひ教えていただきます。
宜しくお願い致します。

編集 削除
かぁ  2004-01-15 00:02:29  No: 53010  IP: [192.*.*.*]

表示させるのはVBですか?
そうだとして話を進めます。(IDLです。ODLはよく知りません)

library セクションの外の enum はVBでは反映されません。
反映されるには、library の中に enum の宣言をする、
または、セクション外で宣言している enum をセクション中で typedef
します。

編集 削除
かぁ  2004-01-15 00:07:18  No: 53011  IP: [192.*.*.*]

間違えました。
上のは、定数を宣言する方法でした。
すいません

編集 削除
VC悩んだ人  2004-01-15 09:35:06  No: 53012  IP: [192.*.*.*]

有難う御座います。
odlファイルに以下のソースを追加しました。
typedef [ uuid(AB95479D-8CE4-52EA-99F3-69752424522B), hidden ]
    enum {
        styleFoo = 0,
        styleBar = 1
    } MyStyleSettings;


dispinterface _DTttttt
  {
  properties:
    // メモ - ClassWizard はこの位置にプロパティ情報を追加します。
    //    このセクションの編集は慎重に行ってください。
    //{{AFX_ODL_PROP(CTtttttCtrl)
    [id(1)] MyStyleSettings test;
    //}}AFX_ODL_PROP

  methods:
    // メモ - ClassWizard はこの位置にメソッド情報を追加します。
    //    このセクションの編集は慎重に行ってください。
    //{{AFX_ODL_METHOD(CTtttttCtrl)
    //}}AFX_ODL_METHOD

    [id(DISPID_ABOUTBOX)] void AboutBox();
  };
そして、このOCXをVBのフォームに利用すれば、確かにtestというプロパティは自動的に「0-styleFoo」「1-styleBar」の選択項目が設定されています。
ただし、このOCXをVCのフォームに利用するとき、testというプロパティを表示していません。

編集 削除