- 主题:用 Win32 API 编了个无模式对话框
对话框是resizable的。把鼠标放到边框右下角,按下鼠标移动,就可以调整对话框的大小。这很正常。按下鼠标向上移动,窗口高度变矮,宽度不变,没问题。继续往上拉,高度缩成一条,宽度不变,也没问题。
下面问题来了:此时(窗口缩成一条时)往左拖动鼠标,有的时候窗口的左边框会突然蹦到屏幕左沿以外,也就是窗口变宽了且半个窗口晾在屏幕外面。
有见过这种情况的吗?
--
FROM 138.19.103.*
没见过
不过看起来似乎可以预防
resize 的时候检查左上角横坐标 相等了就不要继续修改 size 了
【 在 fanci (大葡萄) 的大作中提到: 】
: 对话框是resizable的。把鼠标放到边框右下角,按下鼠标移动,就可以调整对话框的大小。这很正常。按下鼠标向上移动,窗口高度变矮,宽度不变,没问题。继续往上拉,高度缩成一条,宽度不变,也没问题。
: 下面问题来了:此时(窗口缩成一条时)往左拖动鼠标,有的时候窗口的左边框会突然蹦到屏幕左沿以外,也就是窗口变宽了且半个窗口晾在屏幕外面。
: 有见过这种情况的吗?
: ...................
--
FROM 203.110.132.*
你在代码里面计算了大小?然后值变成负的了吧。
【 在 fanci 的大作中提到: 】
: 对话框是resizable的。把鼠标放到边框右下角,按下鼠标移动,就可以调整对话框的大小。这很正常。按下鼠标向上移动,窗口高度变矮,宽度不变,没问题。继续往上拉,高度缩成一条,宽度不变,也没问题。
: 下面问题来了:此时(窗口缩成一条时)往左拖动鼠标,有的时候窗口的左边框会突然蹦到屏幕左沿以外,也就是窗口变宽了且半个窗口晾在屏幕外面。
: 有见过这种情况的吗?
--
FROM 223.166.151.*
意外的找到了解决方法:在建立对话框之前调用 SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);
就完全和确定的解决了这个问题。
感觉根源是Win10 高DPI处理上还是有点bug。
【 在 fanci () 的大作中提到: 】
: 对话框是resizable的。把鼠标放到边框右下角,按下鼠标移动,就可以调整对话框的大小。这很正常。按下鼠标向上移动,窗口高度变矮,宽度不变,没问题。继续往上拉,高度缩成一条,宽度不变,也没问题。
:
: 下面问题来了:此时(窗口缩成一条时)往左拖动鼠标,有的时候窗口的左边框会突然蹦到屏幕左沿以外,也就是窗口变宽了且半个窗口晾在屏幕外面。
:
--
FROM 203.145.94.*