Top / DCOM でチャット / 2. チャットクライアント

チャットクライアントの機能

チャットクライアントに、必要な機能をあげてみましょう。

  • サーバーに接続する
  • 発言を聞く(表示する)
  • 発言する
  • ユーザ一覧を見る(これは、オマケみたいなもんです。)

これらの機能を実装していきます。

まず、最初にやるべきことは、チャットサーバーを参照設定することです。

チャットサーバーをコンパイルすると、レジストリに情報が書き込まれ、「プロジェクト」→「参照設定」で、CChat が表示されるようになります。

sanshou.gif

チェックボックスにチェックをつけて「OK」ボタンを押します。

ログオン画面

サーバーに接続する

logon.gif

ログオン画面で「OK」ボタンを押すと、サーバーに接続し、ログオンします。

接続

Public gobjCChat As CChat.CSession

Public Function ConnectServer(ByVal ServerName As String) As Boolean
    On Error GoTo Err_Handler
    Set gobjCChat = CreateObject("CChat.CSession", ServerName)
    ConnectServer = True
    Exit Function
Err_Handler:
    MsgBox Err.Description, vbCritical, Err.Source
    Set gobjCChat = Nothing
End Function

ログオン

Public Function LogonServer(ByVal UserName As String) As Boolean
    On Error GoTo Err_Handler
    gobjCChat.UserName = UserName
    LogonServer = True
    Exit Function
Err_Handler:
    MsgBox Err.Description, vbCritical, Err.Source
    Set gobjCChat = Nothing
End Function
  • UserName プロパティにユーザ名を入れると、重複するユーザがいないかチェックされます。

対話画面

client.gif

txtLog テキストボックス

  • Multiline = True , Locked = True の txtLog には、発言の履歴を表示します。

txtMessage テキストボックス

  • ユーザが発言するときは、発言を、ここに記入して、送信ボタンを押します。

cmdPost 送信ボタン

  • 送信ボタンです。Default = True にしておくと、便利です。

発言を聞く

接続したユーザが何か発言したら、そのイベントを受け取りたいので、次のようにコーディングします。

Private WithEvents objCChat As CChat.CSession

CChat.CSession のインスタンス作成は、ログイン画面で行っていますので、チャット画面では参照をこのオブジェクト変数にセットします。

これは Form_Initialize イベントで行います。

Private Sub Form_Initialize()
    Set objCChat = gobjCChat
End Sub

オブジェクトの破棄は、Form_Terminate で行います。

Private Sub  Form_Terminate()
   Set objCChat = Nothing
End Sub

objCChat の Hear イベントでは、次のようにしています。

Private Sub objCChat_Hear(ByVal UserName As String, ByVal Message As String)
    txtLog.Text = EditLog(txtLog.Text, UserName & "> " & Message)
End Sub

EditLog 関数は、発言を追加していき、決めておいた発言数以上になったら、古い発言を消すようなロジックを組み込んでおきます。

発言する

送信ボタンが押されたら、発言します。発言のためのテキストボックスは、クリアしておくとよいでしょう。

Private Sub cmdPost_Click()
    objCChat.Talk txtMessage.Text
    txtMessage.Text = ""
    txtMessage.SetFocus
End Sub 

ユーザ一覧を見る

メニューより「ファイル」→「ユーザ一覧」としたときに、ユーザ一覧を表示します。

Private Sub mnuFileUsers_Click()
    Dim msg As String
    Dim objUser As CChat.CUser
    For Each objUser In objCChat.Users
        msg = msg & vbCrLf & objUser.Name
    Next
    MsgBox Mid(msg, 3), , "接続ユーザ"
End Sub

チャットクライアントの配布

サーバーのほうは、ディストリビューションウィザードを使用し、普段どおりセットアッププログラムを作ればいいのですが、クライアントはちょっと違うところがあります。

dist1.gif

上の画面で「追加」ボタンを押し、次に表示されるダイアログで、「リモートサーバーファイル」を選択し、サーバーをコンパイルしたときに作成された .VBR ファイルを含める必要があります。

dist2.gif



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2009-10-27 (火) 02:39:47 (2972d)