none
VB2005で作成したユーザコントロールをVB6で使用する方法 RRS feed

  • 質問

  • VB2005のパネルやピクチャボックス等のコントロールの機能をVB6で流用したく、DLL化してVB6で使用しようと思いました。

    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=30566&forum=7
    http://www.sev.or.jp/ijupiter/world/dc_interrop/dotnet_com_interrop.html

    といったところを参考にし、
    VB2005の「Windowsコントロールライブラリ」のテンプレートにて

     Namespace TestNameSpace
         Public Class TestClass
             Inherits System.Windows.Forms.UserControl

    から始めて作成したコードを、プロジェクトのコンパイル設定の[COM相互運用機能の登録]にチェックを入れてビルドし、DLLを作りました。

     Regasm ~.dll /tlb: ~.tlb /codebase

    にて該当DLLを対象PCに登録したまでは良かったのですが、VB6側で[プロジェクト][コンポーネントの追加]にて追加できなくて困っています。
    追加するためのリストの中に該当DLLが無く、また[参照]ボタンで直接DLLを指定しても
    「ファイル"~.dll"はActiveXコンポーネントとして登録できません。」
    と出てしまい、登録できません。
    [プロジェクト][参照設定]ではリストに存在するので、参照設定することによりDLLのプロパティを設定・参照できるのですが、肝心のフォームへの貼り付けが出来ません。

    もしや、マネージドコードで作成されたユーザコントロールは、アンマネージドな言語では使用できないのでしょうか。

    2006年9月5日 10:19

すべての返信

  • VB2005で、OCX を作りたいって事ですよね。ムリなんじゃないかなぁ・・・

    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=627301&SiteID=7 で ishisaka さんが述べているような理由で。んで、コレだっていう確たる情報ソースがないか探してみたけど、なかなか見つからないです・・・

    2006年9月6日 2:21
  • かめたろさん、返信ありがとうございました。

    無理そうですかぁ……。確かにMSDNには「.netになってOCXは無くなり、DLLに統合された」みたいな表記がありましたが、それを見て「OCXは作れなくなったがDLLで同じことができるのかなぁ」と都合よく解釈してしまっていました。

    もう少しだけ資料を漁りつつ、別の手段(VC++2005)での実現を考慮してみます。

    2006年9月6日 8:47