Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Координаты окна относительно parent 
:(
    Опции темы
The Thing
Дата 3.6.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 286
Регистрация: 6.9.2004

Репутация: 1
Всего: 3



Такая ситуация.
1. Получаю глобальные(относительно экрана) размеры окна.
2. Изменяю глобальные координаты, как мне надо. (ошибки тут нет)
3. Высчитываю разницу между координатами окон, для определения позиция child-окна, относительно parent-окна.
4. Меняю положение окна.

Данная вещь, частично реализует сплиттер, а точнее изменения размеров child`ов.
Все это реализуется в виде контрола ActiveX.
Так вот, когда я использую в качестве отладчика стандартный диалог, и просто размещаю
на нем свой контрол (он от CWnd), то все работает нормально, а если студийный Test Container,
то проявляется следующая особенность:
rcNewFirst.left и rcNewFirst.top = 3; (сначало посмотрите код)
хотя в первом случае эти параметры были равны 0.
И при MoveWindow() мой child смещается на 3 пикселя по X и Y.
Код

...
CRect rcFirst, rcLast;
m_BoardArr[nLine]->GetWindowRect( &rcFirst );
m_BoardArr[nLine+1]->GetWindowRect( &rcLast );

rcFirst.bottom = y_pos;
rcLast.top = y_pos + HG_TRMLINE;

CRect rcNewFirst, rcNewLast;
rcNewFirst.SetRect( CPoint( rcFirst.TopLeft() - rcWin.TopLeft() ),
    CPoint( rcFirst.BottomRight() - rcWin.TopLeft() ) );
rcNewLast.SetRect( CPoint( rcLast.TopLeft() - rcWin.TopLeft() ),
    CPoint( rcLast.BottomRight() - rcWin.TopLeft() ) );

m_BoardArr[nLine]->MoveWindow( &rcNewFirst );
m_BoardArr[nLine + 1]->MoveWindow( &rcNewLast );

 


Вопрос: как это обойти, что это вообще такое, и от чего зависит?
Можно ли напрямую узнать координаты окна относительно HWND?

Заранее благодарен.


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Earnest
Дата 3.6.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Всегда работай в координатах парента - ты же чайлды таскаешь. 


--------------------
...
PM   Вверх
The Thing
Дата 3.6.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 286
Регистрация: 6.9.2004

Репутация: 1
Всего: 3



GetWindowRect( &rcFirst ) - получает глобальные координаты, в том-то и проблема перейти к координатам parent
MoveWindow - работает в координатах parent`а


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Earnest
Дата 4.6.2008, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Какая проблема? ScreenToClient, MapWindowPoints и т.д.
И насчет MoveWindow ты прав только для дочерних окон.



--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0721 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.