kob*_*bik 5 c++ delphi winapi mfc dialog
至少有 2 种方法可以执行此 AFAIK。
和这个:
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);
Run Code Online (Sandbox Code Playgroud)
哪种方法更好,为什么?该方法MapWindowPoints是否适用于多个显示器?
我所关注的主要是MapWindowPoints和多显示器,因为通过0如hWndFrom将使用HWND_DESKTOP
由于@TLama 拒绝承认并发布答案,我将发布一个答案供他完成。(谢谢! :))
该方法最明显的问题(1) ScreenToClien是,如果对话框窗口具有样式WS_EX_LAYOUTRTL并且其内容是镜像的,则该方法会失败。
在这种情况下,方法(2) MapWindowPoints将正确返回镜像点。
除了 之外我找不到任何其他差异WS_EX_LAYOUTRTL。
这两种方法都适用于多个显示器。