首页
社区
课程
招聘
未解决 [讨论]多屏幕,设定窗口位置问题。虽然解决了,但不明白为什么
发表于: 2020-11-20 08:24 1796

未解决 [讨论]多屏幕,设定窗口位置问题。虽然解决了,但不明白为什么

2020-11-20 08:24
1796

1.电脑是双屏幕。
2.程序有一个主窗口,有一个托盘图标,右键托盘图标,会弹出菜单(是一个独立的窗口)。
3.使用的DUILIB库编写的UI。

 

问题表现:
1.当非主屏幕的缩放比例大于100%时,且程序的主窗口在非主屏幕上,右键托盘菜单的弹出位置,如果设置成鼠标右键的位置,就会看不见(用鼠标的位置设置菜单位置,菜单位置会超出主屏幕很多)。
2.当非主屏幕的缩放比例等100%时,程序的主窗口在非主屏幕上,右键托盘菜单的弹出位置,完全正常,菜单能够正常显示。
3.当主窗口在主屏幕时,弹出正常。

 

花费了不少力气,找到了主屏幕不缩放,非主屏幕缩放的坐标计算方法,但是当主屏幕和非主屏幕都有缩放的时候,坐标计算又不准了。
算法挺复杂的,我觉得不应当这样,应当直接指定窗口的坐标就好了。

 

有哪位解决过这类的问题呢?
实验的解决方法:
1.原来菜单窗口是在主窗口里面创建的(但不是父子窗口关系,菜单窗口没有独立的消息循环),我将菜单窗口和主窗口分开创建,隐藏菜单窗口,弹出菜单,问题依然
2.菜单窗口使用独立的消息循环,问题依然
3.菜单窗口单独在一个线程里面,独立的消息循环,问题依然。
就差为菜单单独创建一个进程了。

 

解决掉的方法:
极其简单,不用计算双屏幕相关坐标,不用管有多少个屏幕,不用管什么主屏幕,非主屏幕,创建窗口时,加一个样式上去就可以了,这个样式是什么先不透露,MSDN对这个样式的说明里面完全没有多屏幕相关的介绍。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-11-20 08:24 被牧风编辑 ,原因: 补充标题
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//