Преобразование координат
От: server_mouse Беларусь  
Дата: 19.08.03 19:34
Оценка:
Hi ALL!

Есть диалог. На нём ActiveX.
На WM_MOUSEMOVE ActiveX шлёт своему контейнеру координаты мышки.
Вопрос: как преобразовать полученые координаты в координаты клиентской области диалога?
Уже перепробовал
CPoint p(x,y);
::ClientToScreen(GetDlgItem(IDC_COMPACTIVEXCTRL1)->GetSafeHwnd(),&p);
ScreenToClient(&p);
::ScreenToClient(GetDlgItem(IDC_COMPACTIVEXCTRL1)->GetSafeHwnd(),&p);
ClientToScreen(&p);

Всё неправильно. Необходимо вычислять самому?
Если человек программист, то это надолго.
Re: Преобразование координат
От: Vadim B  
Дата: 19.08.03 19:52
Оценка:
Здравствуйте, server_mouse, Вы писали:

_>Есть диалог. На нём ActiveX.

_>На WM_MOUSEMOVE ActiveX шлёт своему контейнеру координаты мышки.
_>Вопрос: как преобразовать полученые координаты в координаты клиентской области диалога?
_>Уже перепробовал
_>
_>CPoint p(x,y);
_>::ClientToScreen(GetDlgItem(IDC_COMPACTIVEXCTRL1)->GetSafeHwnd(),&p);
_>ScreenToClient(&p);
_>::ScreenToClient(GetDlgItem(IDC_COMPACTIVEXCTRL1)->GetSafeHwnd(),&p);
_>ClientToScreen(&p);
_>

_>Всё неправильно. Необходимо вычислять самому?

Попробуй вот так:
::MapWindowPoints(GetDlgItem(IDC_COMPACTIVEXCTRL1)->GetSafeHwnd(),
                  this->GetSafeHwnd(), &p, 1);

(предполагая, что this — это диалог). Ну или если ты уж все равно MFC используешь, то так:

GetDlgItem(IDC_COMPACTIVEXCTRL1)->MapWindowPoints(this, &p, 1);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.