5

実行時バインディングを使用してVisualFoxProのフォームに追加するActiveXコントロール(C#を使用して作成)があります。コントロールを登録すると問題なく動作します。

reg free COMを使用して、必要なマニフェストファイルを作成したいと思います。これで、ダブルクリックするか文法的にアクティブ化するまで、ロードされて非アクティブ状態で表示されます。regfreecomマニフェストファイルとは何の関係もないと思います。ただし、遅延バインディング呼び出しを行う前/後に設定するために必要なことはありますAddObject()か?

this.AddObject('OleControl1', 'oleControl', 'SomeCompany.SomeOleControl') 

それOleTypeAllowedによって作成されたOleControlのプロパティを確認すると、 (ActiveXオブジェクト)ではなく(埋め込みOLEオブジェクト)になっています。そのため、OleControlは間違ったタイプにインスタンス化されました。AddObject()1-2

私も次のことを試しました:

  1. DEFINEのサブクラスOleControlとプロパティを設定しますOleTypeAllowed = -2。コントロールをロードするために遅延バインディングを使用しました。必要に応じて動作しませんでした。OleTypeAllowedとして戻ってきた1

  2. ActiveXコントロールを登録しました。ビジュアルエディターを使用して、ActiveXコントロールをサブクラスとしてプロジェクトに追加しました。コントロールの登録を解除しました。コントロールをロードするために遅延バインディングを使用しました。必要に応じて動作しませんでした。OleTypeAllowedとして戻ってきました1

OleControlをActiveXコントロールとしてロードすることは可能ですか?

FoxProに変換できるVBからの入力もいただければ幸いです。

4

1 に答える 1

0

おそらくmiscStatusContent属性が間違っています。これは、デプロイする VB6 アプリ マニフェストのスニペットです。

<file name="External\COMCTL32.OCX">
    <typelib tlbid="{6B7E6392-850A-101B-AFC0-4210102A8DA7}" version="1.3" flags="control,hasdiskimage" helpdir="" />
    <comClass clsid="{9ED94440-E5E8-101B-B9B5-444553540000}" tlbid="{6B7E6392-850A-101B-AFC0-4210102A8DA7}" progid="COMCTL.TabStrip.1" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst">
        <progid>COMCTL.TabStrip</progid>
    </comClass>
    ....
</file>

miscStatus明示的にクリアする必要があることに注意してください。

自動ビルドでは、マニフェストの作成にUMMMを使用しています。

于 2012-11-13T11:15:31.087 に答える