質問: activex dll と activexコントロールの違い vb6で開発をしています。 複数のexeファイルを使用するシステムです。 各exeファイルの共通のモジュールをライブラリ化しようと思っています。 これは [activex dll] 又は、[activexコントロール] のどちらでも実現できると思うんですが、どちらで作成した方が良いのでしょうか? それぞれのメリット、デミリットを教えて下さい。
回答: 混乱させますw 私も最近まで知らなかったのですが、任意のタイミングでocxもインスタンスの生成が可能みたいです。 winsockを張らずにpgを書き上げ、winsockコントロールを使用する方法がわたしの利用しているメーリングリストに出ておりました。 その結末は、「あまり公開はされてはいないけど、ほとんどのコントロールはexeにしてからocxとして取り込むことができる」ということです。 activexdllも参照設定をしなければ、dllバージョンが違っても大丈夫です。 ただし宣言が as hogehoge←(dllの定義)を as object として、createobject("dll定義")のように行うと、引数が一緒ならexeはリコンパイルしないでもいいです。実例として、エクセルを参照設定して[as excel]と宣言していたら、その参照設定に対応したexcelしか操作できませんが、[as object]と[createobject("excel.application")]とすると、excel95~xpまで扱えます。 不便なのは、タイプライブラリが未設定になるので、excelの各プロパティ/メソッドを知らないといけないし、excel固有の定数が宣言もされてないので、自分で定数値を調べなければいけません。でもバージョンの違いを気にしないでいけるのは、非常に便利です。 速さのことを言ったら、当然dllが早いです。 ocxはプロパティにright/leftなどを持っています。変えて言うと実体を持っていると言うことです。非表示にしていても実体をもっています。dllはインスタンスは生成されますが、ocxだって生成されるので、表示しないで使用するなら、ocxの意味があまりありません。 んで、私(個人)の考えとしては、、、 ※オリジナルボタンなどの、画面上必要ならocx 理由:画面に必要だから ※画面に表示を行う必要がなくても、配布する気ならocx 理由:配布先のユーザが扱いやすい ※そうじゃなければdll 理由:ocxにする理由が見つからないから 余談です。 私はいつもcommonコントロールは使用しません。 理由:簡単なapiでも実現できるのに、機能が少ないcommonコントロールを追加して、exeの容量を大きくしたくないから