Перевод в клиентские координаты

программирование WinAPI

С помощью какой ф-ции в VisualC++ перевести координаты элемента в окне в клиентские координаты окна?
Если я получаю rect элемента,то они у меня (0,0,rect.right,rect.bottom),а нужны координаты расположения элемента относительно клиентской части окна.

Примечание:
azlab.org
Я где-то читал,что так можно получить координаты.А какая ф-ция возвращает left и top элемента?

Примечание:
azlab.org
Вот примерный код для перемещения окна
static RECT rc;
static POINT p;
...............................................
case WM_MOUSEMOVE:
GetClientRect(hStatic,&rc);
p.x=rc.left;
p.y=rc.top;
ScreenToClient(hDlg,&p);
if((HIWORD(lp)==p.x)||(LOWORD(lp)==p.y))
MoveWindow(hStatic,p.x+10,p.y+10,80,80,1);
break;
Не работает.Вроде бы ScreenToClient() должна привязывать rc элемента к координатам окна диалога.

Примечание:
Разобрался.Код работает,только мне нужно было использовать не ScreenToClient(),а ClientToScreen().
Всем спасибо.
Ответы:
А зачем ты получаешь rect, когда нужны координаты? Есть свойства left и top, для получения координат. left + width и top + height - rect который контрол занимает на форме
погодите...
GetClientRect с мсдн http://msdn.microsoft.com/en-us/library/ms633503(VS.85).aspx как раз возвращает вам клиентские координаты.
а ScreenToClient с http://msdn.microsoft.com/en-us/library/dd162952(VS.85).aspx - "converts the screen coordinates of a specified point on the screen to client-area coordinates", т.е. берет координаты окна по его хадлеру и возвращает его клиентские координаты относительно родительского окна по отношению к вашему.


16 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.