Как получить координаты окна клиентской области - PullRequest
12 голосов
/ 14 июля 2010

Я могу получить координаты всей области окна и координаты клиентской области с помощью вызовов Win32 GetClientRect и GetWindowRect. Моя проблема в том, что GetClientRect всегда возвращает 0,0 для верхнего левого. Как выяснить, какая фактическая область клиента относительно прямоугольника окна?

Ответы [ 5 ]

18 голосов
/ 14 июля 2010

Вы можете использовать ClientToScreen , чтобы получить координаты верхней левой (0,0) точки в экранных координатах.RECT, возвращаемый GetClientRect, будет подходящим для получения нижнего правого угла (просто добавьте к точке POINT, установленной ClientToScreen).

5 голосов
/ 14 июля 2010

Используйте ClientToScreen для преобразования клиентских координат в экранные координаты. Прямоугольник окна (GetWindowRect) уже находится в экранных координатах и ​​включает в себя не клиентскую область (границы, заголовки и т. Д.)

3 голосов
/ 06 января 2011

А если вы работаете с WinForms, вы можете использовать PointToScreen вместо ClientToScreen для решения, предложенного Ридом Копси.

1 голос
/ 28 марта 2015

Отношение между прямоугольником окна (с границами и т. Д.) И клиентским прямоугольником (внутри границ) легче всего найти с помощью AdjustWindowRectEx () . Получите стиль окна и бывший стиль окна и вызовите эту функцию, чтобы увидеть, сколько границ находится на каждой стороне.

0 голосов
/ 14 июля 2010

Вы также можете использовать функцию MapWindowPoints для одновременного преобразования всего RECT в экранные координаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...