在菜单提示新消息
本节的内容可以参考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。