至少有两种方法可以做这个AFAIK。
How do I find position of a Win32 control/window relative to its parent window?
和此:
How to get size and location of a control placed on a dialog in MFC?
htext := GetDlgItem(hDlg, IDI_TEXT);
GetWindowRect(htext, R);
// (1)
// Pt := Point(R.Left, R.Top);
// ScreenToClient(hDlg, Pt);
// R := Rect(Pt.X, Pt.Y, Pt.X + R.Right - R.Left, Pt.Y + R.Bottom - R.Top);
// OR: (2)
MapWindowPoints(0, {GetParent(htext)} hDlg, R, 2);
FrameRect(dc, R, brush);
哪种方法更好,为什么?具有MapWindowPoints
的方法是否适用于多个监视器?
我关注的主要是MapWindowPoints
和多个监视器,因为0
hWndFrom
将HWND_DESKTOP
使用{{1}}
答案 0 :(得分:3)
由于@TLama拒绝接受信用并发布回复,我将发布一个给他最终确定。 (谢谢!:))
方法(1)
ScreenToClien
最明显的问题是,如果对话窗口具有WS_EX_LAYOUTRTL
样式且其内容已镜像,则它会失败。
在这种情况下,方法(2)
MapWindowPoints
将正确返回镜像点。
除了WS_EX_LAYOUTRTL
之外,我找不到任何其他差异。
这两种方法适用于多个监视器。