gpt4 book ai didi

c++ - 找到控件相对于其父窗口的位置的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:07 25 4
gpt4 key购买 nike

至少有两种方法可以做到这一点 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

最佳答案

由于@TLama 拒绝承认并发布答案,我将发布一个供他完成。 (谢谢!:))


方法 (1) 最明显的问题 ScreenToClien是如果对话框窗口有 WS_EX_LAYOUTRTL 它会失败样式及其内容是镜像的。

在这种情况下,方法 (2) MapWindowPoints将正确返回镜像点。

除了 WS_EX_LAYOUTRTL 之外,我找不到任何其他差异。

这两种方法都适用于多台显示器。

关于c++ - 找到控件相对于其父窗口的位置的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com