遇到个极其不理解的问题: CClientDC dc(this);
OnPrepareDC(&dc);断点跟踪过程中
发现同一个矩形参数(top=-3200 bottom=-4300 left=-3200 right=-2800)
经OffsetRect(50000, -50000)后
都变成了(top=-53200 bottom=-54300 left=46800 right=47200)但是
经dc.LPtoDP转换后就有了不同的结果
第一次为(top=422 bottom=458 left=250 right=262)
第二次为(top=2022 bottom=2058 left=1850 right=1862)
正好都差了1600这是怎么回事呢
请大侠指教
急用
谢谢
OnPrepareDC(&dc);断点跟踪过程中
发现同一个矩形参数(top=-3200 bottom=-4300 left=-3200 right=-2800)
经OffsetRect(50000, -50000)后
都变成了(top=-53200 bottom=-54300 left=46800 right=47200)但是
经dc.LPtoDP转换后就有了不同的结果
第一次为(top=422 bottom=458 left=250 right=262)
第二次为(top=2022 bottom=2058 left=1850 right=1862)
正好都差了1600这是怎么回事呢
请大侠指教
急用
谢谢
一:LPtoDP前没有初始化矩形;
二:是不是连续两次调用了LPtoDP,当然结果会不同。
这个工程主要是为判断鼠标激活响应的
要激活的是矩形框的边(看成粗边,狭窄的矩形区域)
而相邻两个矩形的边是重合的
(第一个矩形框的右侧边与第二个矩形框的左侧边是重合的)
因此这两条边具有同一个矩形参数(top=-3200 bottom=-4300 left=-3200 right=-2800)
矩形序列采取CArray结构,因此需要在循环中完成循环开始前
CClientDC dc(this);
OnPrepareDC(&dc);第一次循环,鼠标在第一个矩形框的右侧边范围内时,
经OffsetRect(50000, -50000)后
变成了(top=-53200 bottom=-54300 left=46800 right=47200)
经dc.LPtoDP转换后为(top=422 bottom=458 left=250 right=262)
鼠标所在点在这个矩形区域内第二次循环,鼠标在第二个矩形框的左侧边范围内时,
经OffsetRect(50000, -50000)后
变成了(top=-53200 bottom=-54300 left=46800 right=47200)
但是经dc.LPtoDP转换后却为(top=2022 bottom=2058 left=1850 right=1862)
4个参数正好都差了1600
鼠标所在点不在这个矩形区域内很差异啊
到底是什么原因呢?