注册 登录
编程论坛 VFP论坛

请教MyFll系统托盘问题

hyf8285 发布于 2022-07-25 19:19, 2173 次点击
请教:我用木瓜的MyFll里的托盘函数制作了系统托盘,并设置右键弹出菜单,但是当隐藏表单后,右键却弹不出菜单,表单正常时可以弹出菜单,请大佬帮忙看看!
只有本站会员才能查看附件,请 登录
15 回复
#2
吹水佬2022-07-26 08:52
回复 楼主 hyf8285
MyFll的没试过
windows API 系统托盘问题以前有讨论过
看看这贴19楼的有无帮助
https://bbs.bccn.net/viewthread.php?tid=462972&extra=&highlight=%CD%D0%C5%CC&page=2
#3
hyf82852022-07-28 08:57
回复 2楼 吹水佬
谢谢吹版主,您的API我学不来!MyFll的系统托盘用函数
SysTrayAdd(1,".\Icon\85.ico",cMess,"Main._ShowAgain()","do .\Prgs\RightSystrayMenu.Prg"),就行,我是想问下最后一句"do .\Prgs\RightSystrayMenu.Prg"在界面最小化时为什么弹不出右键?在vfp窗口调试下是可以的,但是隐藏VFP窗口后就弹不出右键了
#4
mywisdom882022-07-28 09:28
myfll好像每个函数,都有作者的列子的
#5
hyf82852022-07-28 10:01
回复 4楼 mywisdom88
是的,我觉得这个右键弹不出应该和vfp有关,当界面最小化时已经脱离了VFP,焦点不在vfp窗口里了,所以不执行命令了,界面最大化时,焦点还在vfp里,所以能弹出,不知我的想法对不对?
#6
csyx2022-07-28 13:39
显然是菜单的问题,似乎vfp的菜单是显示在vfp自己屏幕中的,既然vfp最小化了,菜单自然也就显示在看不到的位置了
只有本站会员才能查看附件,请 登录

我从不用vfp自带的菜单,它既不是对象化的,也不能用屏幕坐标定位,所以不清楚应该如何修改


[此贴子已经被作者于2022-7-28 13:53编辑过]

#7
hyf82852022-07-28 22:18
回复 6楼 csyx
那该怎么弄呢?看来这个功能实现不了啦?

[此贴子已经被作者于2022-7-28 22:20编辑过]

#8
csyx2022-07-28 22:42
以下是引用hyf8285在2022-7-28 22:18:48的发言:
那该怎么弄呢?看来这个功能实现不了啦?

简单啊,不用vfp的菜单就行了
用倦猫的弹出菜单吧,github上有下载,免费的 https://
#9
hyf82852022-07-29 07:44
回复 8楼 csyx
好的,谢谢!我先试下
#10
hyf82852022-07-29 10:45
回复 8楼 csyx
能有个例子参考下吗?
#11
csyx2022-07-29 11:27
下载了没有?下载的zip包里绝大部分文件都是用于演示示例用的,真正需要只有类库文件(vcx_Tool.vcx/vct),常量声明(两个.h文件),版本说明(about_chs.txt)
就你的情况,如果仅仅使用(不对类库做任何修改)的话,只要复制vcx_Tool.vcx/vct这两个文件过来即可
因为是对象化菜单,所以使用和控制都非常简单,把你的rightsystraymenu.prg改成下面这样就行了
程序代码:
Local oo, nn

oo = NewObject('PopMenu', 'vcx_tool.vcx')
oo.Clear()
oo.Additem("软件设置")
oo.Additem("\-")
oo.Additem("帮助")
oo.Additem("关于")
oo.Additem("\-")
oo.Additem("还原")
oo.Additem("\-")
oo.Additem("退出软件")

nn = oo.Show()

Do case
Case nn == 1
    MessageBox("软件设置",0,"")
Case nn == 4
    MessageBox("关于",0,"")
Case nn == 6
    Main.Show()
Case nn == 8
    Main.Release()
Otherwise
    *--
EndCase
#12
hyf82852022-07-29 11:33
回复 11楼 csyx
下载了,按照它里面的例子没有弹出菜单,我把你这个试下,如果我要把主菜单也换成这个菜单,该如何用?谢谢!
#13
hyf82852022-07-29 11:37
右键这个成功了!
#14
hyf82852022-07-30 13:12
回复 11楼 csyx
大佬!研究了一天菜单,再请教您一些问题:
1、如何在顶层表单中加入菜单?就像Vfp菜单一样
2、如何像Vfp菜单一样设置跳过?(我知道在Add方法Add(,,,,.F.)可以设置菜单不可用,但是如何控制满足条件可用,否则不可用?)
3、如何设置菜单打勾并取消?(加个0x08,就可以打勾,0x00取消打勾,但是跟第2点一样,我如何控制呢?就是点一下打勾,再点一下取消打勾?)
谢谢!
#15
csyx2022-07-30 15:39
1. 从类名PopMenu可知,倦猫这个类主要是用于实现弹出菜单的,所以不大适合制作主菜单。不过项目中有个test的prg,作者做了些替换vfp菜单的尝试,可以借鉴下其方法
2. Add方法的 tvEnabled 参数允许表达式,也就相当于vfp菜单项的 not SKIP了,你可以将菜单项的此参数一个传入 "1=1",另一个传入 "1=2" 试试
3. tnAddFlag参数传入0x08在我的电脑上没啥效果,并未出现check符号或图标,也就谈不上咋控制了


[此贴子已经被作者于2022-7-30 15:43编辑过]

#16
hyf82852022-07-30 17:19
回复 15楼 csyx
谢谢!oo.Additem("软件设置",,.F.,0x08)就可以实现打勾了
1