-
-
未解决 [讨论]多屏幕,设定窗口位置问题。虽然解决了,但不明白为什么
-
发表于: 2020-11-20 08:24 1803
-
1.电脑是双屏幕。
2.程序有一个主窗口,有一个托盘图标,右键托盘图标,会弹出菜单(是一个独立的窗口)。
3.使用的DUILIB库编写的UI。
问题表现:
1.当非主屏幕的缩放比例大于100%时,且程序的主窗口在非主屏幕上,右键托盘菜单的弹出位置,如果设置成鼠标右键的位置,就会看不见(用鼠标的位置设置菜单位置,菜单位置会超出主屏幕很多)。
2.当非主屏幕的缩放比例等100%时,程序的主窗口在非主屏幕上,右键托盘菜单的弹出位置,完全正常,菜单能够正常显示。
3.当主窗口在主屏幕时,弹出正常。
花费了不少力气,找到了主屏幕不缩放,非主屏幕缩放的坐标计算方法,但是当主屏幕和非主屏幕都有缩放的时候,坐标计算又不准了。
算法挺复杂的,我觉得不应当这样,应当直接指定窗口的坐标就好了。
有哪位解决过这类的问题呢?
实验的解决方法:
1.原来菜单窗口是在主窗口里面创建的(但不是父子窗口关系,菜单窗口没有独立的消息循环),我将菜单窗口和主窗口分开创建,隐藏菜单窗口,弹出菜单,问题依然
2.菜单窗口使用独立的消息循环,问题依然
3.菜单窗口单独在一个线程里面,独立的消息循环,问题依然。
就差为菜单单独创建一个进程了。
解决掉的方法:
极其简单,不用计算双屏幕相关坐标,不用管有多少个屏幕,不用管什么主屏幕,非主屏幕,创建窗口时,加一个样式上去就可以了,这个样式是什么先不透露,MSDN对这个样式的说明里面完全没有多屏幕相关的介绍。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-11-20 08:24
被牧风编辑
,原因: 补充标题
赞赏
他的文章
看原图
赞赏
雪币:
留言: