初歩的な質問ですみません。
あるイベントが発生したら、強制的に他のイベントを発生させたいのですが、
どうすれば良いのでしょう?
RaiseEventイベントステートメント等を使用するのかな、とは思うのですが、
使い方がよくわかりません。
具体的な処理ですが、Winsockが2つありまして、片方のWinsocK
で、SendComplete()が発生したら、その処理の延長として、もう片方の
Winsockに対して、DataArrival()を発生させたいのです。
すみませんが、宜しくお願いします
Set mWinSock2=New Winsock2 をどこかに追加して、
Private Sub Winsock1_SendComplete()
call mWinSock2.Winsock2_DataArrival(bytesTotal)
End Sub
1番簡単 かつ、1番適当な方法。
追記:RaiseEventの使用方法
'イベントを発行するクラスオブジェクトclsTeat
'============================================
Public Event SendText(Byref rText as String)
private sub SetText(Byred rText as String)
RaiseEvent SendText(rText)
End sub
==============================================
'イベントを受け取るフォームモジュール
'==============================================
Private WithEvents mTest as clsTest '①
Private Sub mTest_SendText(Byref rText as String)
Call MsgBox(rText)
End Sub
'==============================================
①どこかに Set mTest = New clsTest を追加すること。
イベントを発行するオブジェクトへの参照を格納する場合は、WithEvents を忘れずに。
回答ありがとうございます。
さっそく試してみたのですが、
FormのLoadで、
Set mWinSock2=New Winsock2
を定義したのですが、コンパイルエラー「ユーザ定義型は定義されていません」
となってしまいます。
すみませんが、もう少し教えてもらいたいのですが。
宜しくお願いします
> Set mWinSock2=New Winsock2 をどこかに追加して、
>
> Private Sub Winsock1_SendComplete()
>
> call mWinSock2.Winsock2_DataArrival(bytesTotal)
>
> End Sub
>
> 1番簡単 かつ、1番適当な方法。
↑なんだコレ?
その際の引数をどうするのかは分かりませんが、
Winsock1_SendCompleteでWinsock2_DataArrivalを呼んでみては?
Call Winsock2_DataArrival(bytesTotal)
Set mWinSock2=New Winsock2
確かにこれは必要なかったです;
やるなら、Set mWinSock2=winsock2 が正しいですね。
'訂正
Private Sub Winsock1_SendComplete()
call Winsock2_DataArrival(bytesTotal)
End Sub
bytesTotalはPrivate変数かPublic変数にして持ってくるといいかも。
ありがとうございました
御教示通りにやったら、うまくいきました
また何かありましたら、宜しくお願いします
ツイート | ![]() |