标题:关于MDI窗口托盘的问题
取消只看楼主
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
结帖率:78.95%
已结贴  问题点数:20 回复次数:10 
关于MDI窗口托盘的问题
我想实现MDI窗口的托盘,普通FORM托盘的代码不适合使用。
盼各位分享一下代码,跪谢(如有托盘闪烁的更好)
搜索更多相关主题的帖子: 托盘 
2015-04-23 15:05
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
得分:0 
这种求助帖就那么不受人待见吗?
2015-04-27 08:52
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
得分:0 
多谢,我马上去试下
另外,下面这段,用RESIZE判断的话效果有没有区别?

以下是引用lianyicq在2015-4-27 09:40:22的发言:
Private Sub minimize_Click()
minimize_to_tray
End Sub
自己按需修改调整
2015-04-27 10:50
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
得分:0 
我调整了之后放入,同时加入了托盘的右键菜单:显示窗口和退出
但是显示窗口点击时要点击两次才能反应,这是什么原因?

Dim nid As NOTIFYICONDATA ' trayicon variable
Sub minimize_to_tray()
Me.Hide
nid.cbSize = Len(nid)
nid.hwnd = Me.hwnd
nid.uId = vbNull
nid.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
nid.uCallBackMessage = WM_MOUSEMOVE
nid.hIcon = Me.Icon ' the icon will be your Form1 project icon
nid.szTip = "处理平台" & vbNullChar
Shell_NotifyIcon NIM_ADD, nid
End Sub
Private Sub MDIForm_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim msg As Long
Dim sFilter As String
msg = X / Screen.TwipsPerPixelX
Select Case msg
Case WM_LBUTTONDOWN
Case WM_LBUTTONUP
Case WM_LBUTTONDBLCLK
Case WM_RBUTTONDOWN
Case WM_RBUTTONUP
  Me.PopupMenu Pomenu
Case WM_RBUTTONDBLCLK
End Select

End Sub
Private Sub MDIForm_Resize()
  If Me.WindowState = vbMinimized Then
    minimize_to_tray
  Else
    Shell_NotifyIcon NIM_DELETE, nid
  End If
End Sub

Private Sub MDIForm_Unload(Cancel As Integer)
Shell_NotifyIcon NIM_DELETE, nid ' del tray icon
End Sub
Private Sub MDIForm_Load()
Shell_NotifyIcon NIM_DELETE, nid ' del tray icon
End Sub

Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Shell_NotifyIcon NIM_DELETE, nid ' del tray icon
Unload Me
End Sub

Private Sub showw_click()
  Me.Show
  Me.WindowState = vbNormal
End Sub
Private Sub quitp_click()
Unload Me
End Sub

[ 本帖最后由 linandceline 于 2015-4-30 13:45 编辑 ]
2015-04-30 09:41
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
得分:0 
OK,解决。
能说明一下原因么?
2015-04-30 14:16
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
得分:0 
又有个问题出现。我在未最小化时用鼠标在窗口内部晃动一下,结果出现菜单了
毫无解决头绪,求助。
2015-05-14 10:10
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
得分:0 
就是下面这部分语句,而且我试过了,无论Me.PopupMenu Pomenu放到哪个条件,晃动鼠标还是会出现菜单
Select Case msg
Case WM_LBUTTONDOWN
Case WM_LBUTTONUP
Case WM_LBUTTONDBLCLK
Case WM_RBUTTONDOWN
Case WM_RBUTTONUP
  Me.PopupMenu Pomenu
Case WM_RBUTTONDBLCLK
End Select
2015-05-14 10:45
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
得分:0 
我刚换了语句,试了下还未发现问题
    If Button = 2 Then
        Me.PopupMenu Pomenu
    End If
2015-05-14 10:50
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
得分:0 
回复 12楼 lianyicq
不好意思啊,还是要弱弱问一句,这样会不会比较复杂了?
直接用BOTTON值会不会更好?有弊病么?
2015-05-14 10:58
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
得分:0 
恩,这个我试过了,不加检测的确是会出现菜单
多谢耐心指教
2015-05-14 11:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-444406-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025576 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved