none
VB6で作成したDLLをVB2005からの呼び出し方? RRS feed

  • 質問

  • WinXP   VB6 , VB2005 (Express Edition)    Oracle9i

    で開発しています。

     

    VB6で作成したDLLをVB2005から呼び出した時に

    Frame に配置してあるラジオボタンの背景色が

    黒になり、フォーム上に配置したラジオボタンの

    ForeColorが黒になり、チェックボックスの

    ForeColorが黒になります。

    解決方法はありますか?

    ご教授ねがいます。

     

    -- DLL呼び出しコード --

    ①オブジェクト作成

              Private J30_01SP As Object    ←オブジェクト宣言

     

              -- フォームロードに記述 --

              J30_01SP = CreateObject("J30_01SP.J30_01SC1")            ←オブジェクト作成

     

             -- ボタンクリックに記述 --

            I_SEQ = TexSeq.Value
            I_SEQ2 = 0
            O_SEQ = 0
            O_SEQ2 = 0
            Call J30_01SP.Serch(I_SEQ, I_SEQ2, O_SEQ, O_SEQ2)        ←DLL呼び出し

     

    ②DLL参照設定

          J30_01SP.dllを参照設定する。

     

      I_SEQ = TexSeq.Value

      I_SEQ2 = 0

      O_SEQ = 0

      O_SEQ2 = 0

      Dim J30_01SP As New J30_01SP.J30_01SC1             ←オブジェクト作成

      Call J30_01SP.Serch(I_SEQ, I_SEQ2, O_SEQ, O_SEQ2)     ←DLL呼び出し

     

    上記2通りの方法でやっても結果は同じでした。

     

    VB6のプロジェクトからJ30_01SPを実行している状態で

    VB2005からJ30_01SPを呼び出した時は色が変わることは

    ありませんでした。 

    この場合の表示スタイルがWindows2000

    の表示スタイルでした。

     

    そして色が変わった時の表示スタイルはWindowsXPの

    表示スタイルでした。

     

    この結果からDLLを呼び出すときの表示のスタイル設定

    が設定できたら解決するのかと思うのですが設定方法

    も設定できるかどうかも分からない状態です。

     

    よろしくお願いします。

     

     

     

     

    2008年12月15日 9:07

回答

  • 提示されたコードには、色を変更するような箇所は何もふくまれていませんでした。

    Windowsの表示スタイルによって色の変わりようが違うのであれば「黒」ではなく何かシステムカラーを設定している可能性が高いのですが、実際に色を設定しているコードが示されていないので想像の域を出ません。

    色を変更している箇所を探し出してみてください(DLLのソースコードも含め)。

     

    2008年12月15日 10:59

すべての返信

  • 提示されたコードには、色を変更するような箇所は何もふくまれていませんでした。

    Windowsの表示スタイルによって色の変わりようが違うのであれば「黒」ではなく何かシステムカラーを設定している可能性が高いのですが、実際に色を設定しているコードが示されていないので想像の域を出ません。

    色を変更している箇所を探し出してみてください(DLLのソースコードも含め)。

     

    2008年12月15日 10:59
  • 初音玲さん返信ありがとうございます。

     

    >Windowsの表示スタイルによって色の変わりようが違うのであれば「黒」ではなく

    >何かシステムカラーを設定している可能性が高いのですが、実際に色を設定

    >しているコードが示されていないので想像の域を出ません。

    >色を変更している箇所を探し出してみてください(DLLのソースコードも含め)。

     

    質問で記載したコントロールは全てデザイナで色の指定を行って、コードでの色の指定はしていません。(DLLのソースコード)

     

    Frame 、チェックボックス、ラジオボタン のBackColor は &H8000000F& ←システムのボタンの表面

    チェックボックスの ForeColor は &H000000FF& ←パレットの赤

    ラジオボタンの ForeColor は &H80000012& ←システムのボタンの文字

     

    DLLの各コントロールの色をパレットから選択してみたのですがやはり色が黒になります。

     

    VB2005 でDLL自体を作成しなおした方が良いのは分かってはいるのですが

    都合上VB6 の DLLでなんとかしたいのでよろしくお願いします。

     

    足りない部分等がございましたらご指摘下さい。

     

     

    2008年12月16日 1:17