在菜单提示新消息

本节的内容可以参考CaseStudy目录下的文件:QQClient.Table。

本节的任务是在菜单的配置栏加一个OpenQQ按钮:

这个按钮可以实现以下功能:

1、当OpenQQ离线时,按钮图标为,当OpenQQ在线时,按钮图标为,这样我们就可以通过这个按钮判断OpenQQ的状态。
2、当OpenQQ离线时,单击这个按钮,可以打开自定义的登录窗口。
3、当OpenQQ在线时,单击这个按钮,可以打开内置聊天窗口。
4、当收到新消息时,能自动显示未读新消息的条数,并自动闪烁,以提示用户有新消息。

提示:这里的未读新消息统计,仅针对通过内置聊天窗口收发的消息。

设计步骤:

1、将上述两个图标复制到项目的Images目录下,的文件名为offline.ico,的文件名为online.ico

2、在配置栏增加这个按钮,按钮图标设置为offline.ico,按钮的代码设置为:

If QQClient.Ready Then
    QQClient.OpenChatWindow()

Else

    Forms("QQClient").Open()

End
If

3、假定这个新增按钮名称为"OpenQQ",在菜单的SystemIdle事件增加以下代码:

'此段代码用于显示OpenQQ的未读消息
Static
OpenQQ As RibbonMenu.Button
Static
LastTime As Date
If
OpenQQ Is Nothing Then
    OpenQQ = ConfigBar.Items("OpenQQ")

End
If
Dim
txt As String
If
QQClient.Ready
    If QQClient.UnreadCount > 0 Then
        txt = "(" & QQClient.UnreadCount &
"
)"
    End
If

End
If
If
OpenQQ.Text <> txt Then
    OpenQQ.Text =
txt

End
If
If
OpenQQ.Text > "" Then
    Dim ntp As timeSpan = Date.Now - LastTime
    If ntp.TotalSeconds >= 0.5 Then
        LastTime = Date.Now
        If OpenQQ.ForeColor = Color.Red Then
            OpenQQ.ForeColor = Color.Transparent
        Else
            OpenQQ.ForeColor = Color.Red
       
End If
    End
If

End
If

上面代码利用新增加的按钮标题显示未读新消息数量,并每隔0.5秒切换按钮的字体颜色,形成闪烁效果,以提示用户有新消息。

通过这段代码,你还可以学到一招: 定期执行某项任务,并非一定要通过计划或定时器,望认真体会。

4、将自定义登录窗口的登录按钮的代码设置为:

If QQClient.Ready Then
    MessageBox.show("QQClient已经启动,请先关闭","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return

End
If
QQClient
.ServerIP = e.Form.Controls("txtIP").Value  '指定服务器IP地址
QQClient
.ServerPort = e.Form.Controls("txtPort").Value  '指定服务器端口
QQClient
.UserName = e.Form.Controls("cmbDepartment").Value & "." & e.Form.Controls("txtUserName").Value '指定登录用户名
QQClient
.Password = e.Form.Controls("txtPassword").Value
If
QQClient.Start() = True '如果登录成功
    e.Form.Controls("btnChat").Enabled = True
    Dim msg As String"恭喜,OpenQQ登录成功!"
    If QQClient.ServerMessage > "" Then '如果服务器返回了欢迎信息
        msg = msg & QQClient.ServerMessage
    End If
    popMessage(msg,"提示",PopiconEnum.Infomation,5)

Else
'如果登录失败,显示服务器返回错误信息
    e.Form.Controls("btnChat").Enabled = False
    PopMessage("QQClient登录失败,原因:" & vbcrlf & QQClient.ServerMessage,"提示",PopiconEnum.Error,5)

End
If

5、将OpenQQ客户端事件Connected事件代码设置为:

ConfigBar.Items("OpenQQ").SmallImage = GetImage("online.ico")

这行代码用于在OpenQQ登录成功后,将菜单按钮的图标改为online.ico。

6、最后将OpenQQ客户端事件Disconnected事件代码设置为:

ConfigBar.Items("OpenQQ").SmallImage = GetImage("offline.ico")

这样在OpenQQ离线后,菜单按钮的图标会自动改为offline.ico。

 


本页地址:http://www.foxtable.com/webhelp/topics/3012.htm