Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Координаты окна относительно parent |
Автор: The Thing 3.6.2008, 10:52 | ||
Такая ситуация. 1. Получаю глобальные(относительно экрана) размеры окна. 2. Изменяю глобальные координаты, как мне надо. (ошибки тут нет) 3. Высчитываю разницу между координатами окон, для определения позиция child-окна, относительно parent-окна. 4. Меняю положение окна. Данная вещь, частично реализует сплиттер, а точнее изменения размеров child`ов. Все это реализуется в виде контрола ActiveX. Так вот, когда я использую в качестве отладчика стандартный диалог, и просто размещаю на нем свой контрол (он от CWnd), то все работает нормально, а если студийный Test Container, то проявляется следующая особенность: rcNewFirst.left и rcNewFirst.top = 3; (сначало посмотрите код) хотя в первом случае эти параметры были равны 0. И при MoveWindow() мой child смещается на 3 пикселя по X и Y.
Вопрос: как это обойти, что это вообще такое, и от чего зависит? Можно ли напрямую узнать координаты окна относительно HWND? Заранее благодарен. |
Автор: Earnest 3.6.2008, 11:34 |
Всегда работай в координатах парента - ты же чайлды таскаешь. |
Автор: The Thing 3.6.2008, 13:04 |
GetWindowRect( &rcFirst ) - получает глобальные координаты, в том-то и проблема перейти к координатам parent MoveWindow - работает в координатах parent`а |
Автор: Earnest 4.6.2008, 07:29 |
Какая проблема? ScreenToClient, MapWindowPoints и т.д. И насчет MoveWindow ты прав только для дочерних окон. |