Как получить размер и местоположение управления, помещенного в диалоговое окно в MFC?

У меня есть указатель на управление с функцией

CWnd* CWnd::GetDlgItem(int ITEM_ID)

таким образом, я имею CWnd* указатель, который указывает на управление, но просто не может найти метод в CWnd класс, который получит размер и местоположение данного контроля. Какая-либо справка?

21
задан Naveen 16 April 2010 в 13:16
поделиться

1 ответ

CRect rect;
CWnd *pWnd = pDlg->GetDlgItem(YOUR_CONTROL_ID);
pWnd->GetWindowRect(&rect);
pDlg->ScreenToClient(&rect); //optional step - see below

//position:  rect.left, rect.top
//size: rect.Width(), rect.Height()

GetWindowRect дает экранные координаты элемента управления. pDlg-> ScreenToClient затем преобразует их относительно клиентской области диалога, что обычно вам и нужно.

Примечание: pDlg выше - это диалоговое окно. Если вы находитесь в функции-члене класса диалога, просто удалите pDlg -> .

47
ответ дан 29 November 2019 в 06:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: