home *** CD-ROM | disk | FTP | other *** search
- VERSION 5.00
- Begin VB.Form frmChat
- BorderStyle = 3 'Fixed Dialog
- Caption = "vbDirectPlay Chat"
- ClientHeight = 5085
- ClientLeft = 45
- ClientTop = 330
- ClientWidth = 7710
- Icon = "frmChat.frx":0000
- LinkTopic = "Form1"
- MaxButton = 0 'False
- MinButton = 0 'False
- ScaleHeight = 5085
- ScaleWidth = 7710
- StartUpPosition = 3 'Windows Default
- Begin VB.CommandButton cmdWhisper
- Caption = "Whisper"
- Height = 255
- Left = 5820
- TabIndex = 3
- Top = 4740
- Width = 1695
- End
- Begin VB.Timer tmrUpdate
- Enabled = 0 'False
- Interval = 50
- Left = 10200
- Top = 120
- End
- Begin VB.TextBox txtSend
- Height = 285
- Left = 60
- TabIndex = 0
- Top = 4740
- Width = 5655
- End
- Begin VB.ListBox lstUsers
- Height = 4545
- Left = 5760
- TabIndex = 2
- Top = 120
- Width = 1815
- End
- Begin VB.TextBox txtChat
- Height = 4635
- Left = 60
- Locked = -1 'True
- MultiLine = -1 'True
- ScrollBars = 2 'Vertical
- TabIndex = 1
- TabStop = 0 'False
- Top = 60
- Width = 5595
- End
- Attribute VB_Name = "frmChat"
- Attribute VB_GlobalNameSpace = False
- Attribute VB_Creatable = False
- Attribute VB_PredeclaredId = True
- Attribute VB_Exposed = False
- Option Explicit
- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- ' Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
- ' File: frmChat.frm
- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- Implements DirectPlay8Event
- Private Sub cmdWhisper_Click()
- Dim lMsg As Long, lOffset As Long
- Dim sChatMsg As String
- Dim oBuf() As Byte
- If lstUsers.ListIndex < 0 Then
- MsgBox "You must select a user in the list before you can whisper to that person.", vbOKOnly Or vbInformation, "Select someone"
- Exit Sub
- End If
- If lstUsers.ItemData(lstUsers.ListIndex) = 0 Then
- MsgBox "Why are you whispering to yourself?", vbOKOnly Or vbInformation, "Select someone else"
- Exit Sub
- End If
- If txtSend.Text = vbNullString Then
- MsgBox "What's the point of whispering if you have nothing to say..", vbOKOnly Or vbInformation, "Enter text"
- Exit Sub
- End If
-
- 'Send this message to the person you are whispering to
- lMsg = MsgWhisper
- lOffset = NewBuffer(oBuf)
- AddDataToBuffer oBuf, lMsg, LenB(lMsg), lOffset
- sChatMsg = txtSend.Text
- AddStringToBuffer oBuf, sChatMsg, lOffset
- txtSend.Text = vbNullString
- dpp.SendTo lstUsers.ItemData(lstUsers.ListIndex), oBuf, 0, DPNSEND_NOLOOPBACK
- UpdateChat "**<" & gsUserName & ">** " & sChatMsg
- End Sub
- Private Sub Form_Load()
- 'load all of the players into our list
- LoadAllPlayers
- End Sub
- Private Sub UpdateChat(ByVal sString As String)
- 'Update the chat window first
- txtChat.Text = txtChat.Text & sString & vbCrLf
- 'Now limit the text in the window to be 16k
- If Len(txtChat.Text) > 16384 Then
- txtChat.Text = Right$(txtChat.Text, 16384)
- End If
- 'Autoscroll the text
- txtChat.SelStart = Len(txtChat.Text)
- End Sub
- Private Sub txtSend_KeyPress(KeyAscii As Integer)
- Dim lMsg As Long, lOffset As Long
- Dim sChatMsg As String
- Dim oBuf() As Byte
- If KeyAscii = vbKeyReturn Then
- KeyAscii = 0
- If txtSend.Text = vbNullString Then Exit Sub
- 'Send this message to everyone
- lMsg = MsgChat
- lOffset = NewBuffer(oBuf)
- AddDataToBuffer oBuf, lMsg, LenB(lMsg), lOffset
- sChatMsg = txtSend.Text
- AddStringToBuffer oBuf, sChatMsg, lOffset
- txtSend.Text = vbNullString
- dpp.SendTo DPNID_ALL_PLAYERS_GROUP, oBuf, 0, DPNSEND_NOLOOPBACK
- UpdateChat "<" & gsUserName & ">" & sChatMsg
- End If
- End Sub
- Private Function GetName(ByVal lID As Long) As String
- Dim lCount As Long
- GetName = vbNullString
- For lCount = 0 To lstUsers.ListCount - 1
- If lstUsers.ItemData(lCount) = lID Then 'This is the player
- GetName = lstUsers.List(lCount)
- Exit For
- End If
- Next
- End Function
- Public Sub LoadAllPlayers()
- Dim lCount As Long
- Dim dpPlayer As DPN_PLAYER_INFO
- lstUsers.Clear
- For lCount = 1 To dpp.GetCountPlayersAndGroups(DPNENUM_PLAYERS)
- dpPlayer = dpp.GetPeerInfo(dpp.GetPlayerOrGroup(lCount))
- lstUsers.AddItem dpPlayer.Name
- If ((dpPlayer.lPlayerFlags And DPNPLAYER_LOCAL) <> DPNPLAYER_LOCAL) Then
- 'Do not add a ItemData key for myself
- lstUsers.ItemData(lstUsers.ListCount - 1) = dpp.GetPlayerOrGroup(lCount)
- End If
- Next
- End Sub
- Private Sub DirectPlay8Event_AddRemovePlayerGroup(ByVal lMsgID As Long, ByVal lPlayerID As Long, ByVal lGroupID As Long, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_AppDesc(fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_AsyncOpComplete(dpnotify As DxVBLibA.DPNMSG_ASYNC_OP_COMPLETE, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_ConnectComplete(dpnotify As DxVBLibA.DPNMSG_CONNECT_COMPLETE, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_CreateGroup(ByVal lGroupID As Long, ByVal lOwnerID As Long, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_CreatePlayer(ByVal lPlayerID As Long, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_DestroyGroup(ByVal lGroupID As Long, ByVal lReason As Long, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_DestroyPlayer(ByVal lPlayerID As Long, ByVal lReason As Long, fRejectMsg As Boolean)
- Dim lCount As Long
- 'We only care when someone leaves. When they join we will receive a 'MSGJoin'
- 'Remove this player from our list
- For lCount = 0 To lstUsers.ListCount - 1
- If lstUsers.ItemData(lCount) = lPlayerID Then 'This is the player
- UpdateChat "---- " & lstUsers.List(lCount) & " has left the chat."
- lstUsers.RemoveItem lCount
- Exit For
- End If
- Next
- End Sub
- Private Sub DirectPlay8Event_EnumHostsQuery(dpnotify As DxVBLibA.DPNMSG_ENUM_HOSTS_QUERY, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_EnumHostsResponse(dpnotify As DxVBLibA.DPNMSG_ENUM_HOSTS_RESPONSE, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_HostMigrate(ByVal lNewHostID As Long, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_IndicateConnect(dpnotify As DxVBLibA.DPNMSG_INDICATE_CONNECT, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_IndicatedConnectAborted(fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_InfoNotify(ByVal lMsgID As Long, ByVal lNotifyID As Long, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_Receive(dpnotify As DxVBLibA.DPNMSG_RECEIVE, fRejectMsg As Boolean)
- 'process what msgs we receive.
- 'All we care about in this form is what msgs we receive.
- Dim lMsg As Long, lOffset As Long
- Dim dpPeer As DPN_PLAYER_INFO, sName As String
- Dim sChat As String
- With dpnotify
- GetDataFromBuffer .ReceivedData, lMsg, LenB(lMsg), lOffset
- Select Case lMsg
- Case MsgChat
- sName = GetName(.idSender)
- sChat = GetStringFromBuffer(.ReceivedData, lOffset)
- UpdateChat "<" & sName & "> " & sChat
- Case MsgWhisper
- sName = GetName(.idSender)
- sChat = GetStringFromBuffer(.ReceivedData, lOffset)
- UpdateChat "**<" & sName & ">** " & sChat
- End Select
- End With
- End Sub
- Private Sub DirectPlay8Event_SendComplete(dpnotify As DxVBLibA.DPNMSG_SEND_COMPLETE, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
- Private Sub DirectPlay8Event_TerminateSession(dpnotify As DxVBLibA.DPNMSG_TERMINATE_SESSION, fRejectMsg As Boolean)
- 'VB requires that we must implement *every* member of this interface
- End Sub
-