| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4420 人关注过本帖, 2 人收藏
标题:请教,关于系统托盘类Systray.VCX使用
只看楼主 加入收藏
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
结帖率:98.98%
收藏(2)
已结贴  问题点数:20 回复次数:20 
请教,关于系统托盘类Systray.VCX使用
有个列子在:
C:\Program Files\VFP9\Samples\Solution\Toledo\systray_sample.scx
我把类文件复制到E盘,我自己建立1个表单,只做到了显示图标,右键/左键,都没反应..
谁有个简单的列子,有下面的功能就可以了..
1.显示图标,thisform.Systray1.IconFile
2.显示提示,thisform.Systray1.TipText
3.点左键,出左键菜单
4.点右键,出右键菜单
5.就我这文件,我发现,我表单最大化后,图标点左键/右键,都没反应,但不是最大化的时候,好像有反应.能出菜单,但菜单却不是在图标那里出来.感觉,最大化后,点图标时,焦点好像离开了程序.
6.如果使用系统的IDE主窗口,也就是 config.fpw写上screen=on,激活IDE窗口后,再点托盘的图标,最大化,也能左键,出菜单....

那位,做过的,帮忙改改..表单用顶层表单,screen=off

*我只做到...
lcFile="E:\我的托盘\wygl.ico"
IF !ISBLANK(m.lcFile) AND FILE(m.lcFile)
    thisform.Systray1.IconFile = m.lcFile
    thisform.Icon = m.lcFile
ENDIF
thisform.Systray1.TipText="我的托盘"
我的托盘.rar (67.79 KB)
搜索更多相关主题的帖子: 系统托盘 
2016-03-26 21:15
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
我用myfll.dll来做托盘,
在顶层表单中调用,能点出菜单.
但好像有点问题.问题在下面,吹斑竹说用这个类,我就去看了,但却发现上面的问题...
https://bbs.bccn.net/thread-462828-1-1.html
2016-03-26 21:19
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
顶一下,有做过的来。
2016-03-27 11:08
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:5 
托盘 + 顶层表单 + 点出菜单 + 无任何第三方 Dll/Ocx 示例 :
托盘.rar (131.19 KB)

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-27 14:32
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
回复 4楼 aaaaaa
刚测试了1下,基本上可以。
但也还是有个问题,就是,如果我把你的这个Image Capture对应的表单调整最大化,然后调出这个表单,然后,就点不出这个托盘了。
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-03-27 18:20
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
回复 4楼 aaaaaa
简化 4楼后的 系统托盘
托盘.rar (86.69 KB)
2016-03-27 22:32
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
回复 6楼 mywisdom88
在WIN7下测试,发现单击托盘图标未弹出菜单

泉城飞狐
2016-03-28 11:00
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
前提是,表单,不能最大化,
这个我在上面都提到了。。

[此贴子已经被作者于2016-3-28 11:15编辑过]

2016-03-28 11:14
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
也写个简单的示例:测试环境 Win10 + VFP9
程序代码:
DECLARE LONG Shell_NotifyIcon IN Shell32 LONG, STRING@
DECLARE LONG LoadImage        IN User32 LONG, STRING@, LONG, LONG, LONG, LONG
DECLARE LONG CreatePopupMenu  IN User32
DECLARE LONG AppendMenu       IN User32 LONG, LONG, LONG, STRING@
DECLARE LONG TrackPopupMenu   IN User32 LONG, LONG, LONG, LONG, LONG, LONG, LONG
DECLARE LONG GetCursorPos     IN User32 STRING@
DECLARE LONG PostMessage      IN User32 LONG, LONG, LONG, LONG

_screen.Visible = .F.
of = CREATEOBJECT("form1")
of.show
READ EVENTS
CLEAR ALL 
RETURN


DEFINE CLASS form1 as Form
    ShowWindow = 2
    ShowInTaskbar = .F.
    AutoCenter = .T.
    
    hMenu = 0
    ADD OBJECT edit1 as editbox WITH top=10,left=10,width=this.Width-20,height=this.Height-20
    
    PROCEDURE Unload
        LOCAL stData
        stData = BINTOC(88, "4RS");
               + BINTOC(this.hWnd, "4RS"); 
               + BINTOC(101, "4RS");
               + REPLICATE(0h00, 76)
        Shell_NotifyIcon(2, @stData)
        CLEAR EVENTS 
    ENDPROC
    
    PROCEDURE Init
        BINDEVENT(this.hWnd, 0x401, this, "myNotifyEvent")
        BINDEVENT(this.hWnd, 0x111, this, "myCommand")
        this.Show
        PostMessage(this.hWnd, 0x111, 0x102, 0)
        LOCAL stData
        stData = BINTOC(88, "4RS");
               + BINTOC(this.hWnd, "4RS"); 
               + BINTOC(101, "4RS");
               + BINTOC(7, "4RS");
               + BINTOC(0x401, "4RS");
               + BINTOC(LoadImage(0, "systray_demo.ico", 1, 0, 0, 0x10), "4RS");
               + "右点击弹出菜单" + REPLICATE(0h00, 50)
        Shell_NotifyIcon(0, @stData)
    ENDPROC
    
    PROCEDURE myNotifyEvent(hWnd, wMsg, wParam, lParam)
        IF lparam == 0x204
            IF this.hMenu == 0
                this.hMenu = CreatePopupMenu()
                AppendMenu(this.hMenu, 0, 0x101, "显示窗口")
                AppendMenu(this.hMenu, 0, 0x102, "隐藏窗口")
                AppendMenu(this.hMenu, 0, 0x103, "关闭窗口")
            ENDIF
            LOCAL stPOINT, nX, nY
            stPOINT = REPLICATE(0h00, 8)
            GetCursorPos(@stPOINT)
            nX = CTOBIN(LEFT(stPOINT, 4), "4RS")
            nY = CTOBIN(RIGHT(stPOINT, 4), "4RS")    
            TrackPopupMenu(this.hMenu, 2, nX, nY, 0, hWnd, 0)
        ENDIF
    ENDPROC
    
    PROCEDURE myCommand(hWnd, wMsg, wParam, lParam)
        DO CASE 
        CASE wParam == 0x101
            this.Visible = .T.
        CASE wParam == 0x102
            this.Visible = .F.
        CASE wParam == 0x103
            this.Release 
        ENDCASE
    ENDPROC
ENDDEFINE

2016-03-28 11:53
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
终于,吹斑竹出手了。
吹斑竹的,好像最大化,也能点菜单。


[此贴子已经被作者于2016-3-28 13:57编辑过]

2016-03-28 13:46
快速回复:请教,关于系统托盘类Systray.VCX使用
数据加载中...
 
   



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

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