DLLを呼び出すときに関数でCallすると読めていない?


龍一郎  2004-11-10 21:28:28  No: 86605

ちょっと、意味不明なタイトルですいません。
要は、DLLの関数を呼ぶ時に、
VB(.NET)のモジュールのStringDll関数の中で以下のように呼ぶと
フォーム上のreturn_numという名のテキストボックスに、数字が返ってこないのです。

StringDllという関数を無くして、return_num.Text = ReturnNumber(X).ToStringを
cmdDraw.Clickに記述すればちゃんと数字を呼び出せるのですが、
関数として扱うにはどうすればよいのでしょう?

**フォーム**********************
Public Class frmspace
    Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "
#End Region

    Private Sub cmdDraw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDraw.Click
        Call StringDll()
    End Sub

End Class

**モジュール**********************
Module _Module
    Public Declare Function ReturnNumber Lib "givestrings.dll" (ByVal X As Integer) As Integer
    
    Public X As Integer

    Public Sub StringDll()
        Dim frmspace As New frmspace
        frmspace.return_num.Text = ReturnNumber(X).ToString
    End Sub

End Module


raki  URL  2004-11-10 22:06:23  No: 86606

関数コールの仕方が間違っているのではなくて、
クラスの概念が間違っています。

起動時に表示されるfrmspaceフォームの中から
モジュール内のStringDll関数をコールしていますが、
その中では『新たにNewで作成したfrmspace フォーム』の
テキストボックスに対して値を入れています。

起動時に表示されるfrmspaceフォームと
値を格納しようとしているfrmspaceフォームは別物です。
この場合、StringDll関数を以下のようにし、
  Public Function StringDll() As String
      Return ReturnNumber(X).ToString
  End Sub
クリックイベント内で以下のようにすればいいかと思います。
   Me.return_num.Text = StringDll()


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加