Как правильно задать координаты диалога?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 18.12.19 13:55
Оценка:
На диалоговом окне приложения есть кнопка m_IDC_BUTTON1. При её нажатии должен появляться диалог CSecondDialog в такой позиции, чтобы его левый верхний край совпадал бы с левым верхним краем этой кнопки.

Я написал:

CRect  rect;
CSecondDialog  secondDialog(this);

m_IDC_BUTTON1.GetWindowRect(&rect);
secondDialog.MoveTo(rect.left,rect.top,310,240); // здесь 310 и 240--соответственно ширина и высота этого диалога, вместо них могут быть любые другие числа
secondDialog.DoModal();


Диалог появляется, но выскакивает он не по левому верхнему углу кнопки, а на несколько сантиметров правее и ниже.
В чём причина этого? Как исправить эту ошибку?
1613 г. = 2024 г.
Re: Как правильно задать координаты диалога?
От: Evgeniy Skvortsov Россия  
Дата: 20.12.19 21:07
Оценка: -1
Здравствуйте, RussianFellow, Вы писали:


RF>В чём причина этого? Как исправить эту ошибку?


Может дело в системе координат?
Почитает про скрин координаты и и клиентские
Re: Как правильно задать координаты диалога?
От: Nikolaz Германия www.nikeware.com
Дата: 03.01.20 11:08
Оценка: +1
RF>В чём причина этого?
Причина в том, что Вы до сих пор не поняли разницы между HWND и CWnd.

MoveTo() двигает HWND. В вашем случае он еще не создан и будет создан где-то в глубинах DoModal().
Отредактировано 03.01.2020 11:10 Nikolaz . Предыдущая версия .
Re: Как правильно задать координаты диалога?
От: Carc Россия https://vk.com/gosha_mazov
Дата: 09.01.20 17:36
Оценка: 1 (1)
Здравствуйте, RussianFellow, Вы писали:

RF>На диалоговом окне приложения есть кнопка m_IDC_BUTTON1. При её нажатии должен появляться диалог CSecondDialog в такой позиции, чтобы его левый верхний край совпадал бы с левым верхним краем этой кнопки.


RF>Я написал:


RF>
RF>CRect  rect;
RF>CSecondDialog  secondDialog(this);

RF>m_IDC_BUTTON1.GetWindowRect(&rect);
RF>secondDialog.MoveTo(rect.left,rect.top,310,240); // здесь 310 и 240--соответственно ширина и высота этого диалога, вместо них могут быть любые другие числа
RF>secondDialog.DoModal();
RF>


RF>Диалог появляется, но выскакивает он не по левому верхнему углу кнопки, а на несколько сантиметров правее и ниже.

RF>В чём причина этого? Как исправить эту ошибку?
Передавать координаты второго диалога CSecondDialog, например, где-то в конструкторе CSecondDialog::CSecondDialog(…)
и менять расположение диалога уже в CSecondDialog::OnInitDialog.
Aml Pages Home
Re[2]: Как правильно задать координаты диалога?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 16.01.20 07:53
Оценка:
Здравствуйте, Carc, Вы писали:

C>Передавать координаты второго диалога CSecondDialog, например, где-то в конструкторе CSecondDialog::CSecondDialog(…)

C>и менять расположение диалога уже в CSecondDialog::OnInitDialog.

Спасибо за ответ!
1613 г. = 2024 г.
Re[3]: Как правильно задать координаты диалога?
От: Carc Россия https://vk.com/gosha_mazov
Дата: 16.01.20 09:07
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Спасибо за ответ!


Для «спасибо» есть кнопки над сообщением…
Aml Pages Home
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.