Premnath Mali Ответов: 1

Как диалог ребенка с помощью кнопки, как управление вкладками ?


У меня есть один Родительский диалог, два дочерних диалога, две кнопки на родительском диалоге в моем приложении, и я хочу показать и скрыть дочерний диалог соответствующего размера с помощью этих кнопок

в кодировании 's' является объектом одного из дочерних диалоговых классов...

Что я уже пробовал:

void CDialogControlDlg::OnBnClickedStudent()
{
	s.Create(IDD_STUDENT, this);
	SetRectangle(&s);
	s.ShowWindow(SW_SHOW);
}

void CDialogControlDlg::SetRectangle(CStudent* s)
{
	CRect tabRect, itemRect;
	int nX, nY, nXc, nYc;
 
	GetClientRect(&tabRect);
	m_lst.GetItemRect(0, &itemRect);
	 
	nX=itemRect.left;
	nY=itemRect.bottom+1;
	nXc=tabRect.right-itemRect.left-1;
	nYc=tabRect.bottom-nY-1;
	 
	s->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
}

Jochen Arndt

Предполагая, что s является членом класса, вы должны проверить, существует ли диалог уже, и создать его только в том случае, если его нет. В противном случае у вас есть несколько мертвых диалогов.

Premnath Mali

после нажатия кнопки диалог не отображается в правильном положении он показывает в верхнем левом углу что я могу для этого сделать

есть ли какой-нибудь способ установить местоположение там, где мы когда-либо хотим

Jochen Arndt

Вы устанавливаете nX слева от прямоугольника элемента управления списком, который обычно равен нулю. Использовать отладчик, чтобы проверить значения, которые вы передаете.

Premnath Mali

можете ли вы предоставить фрагмент кода для setRectangle() и шаги, чтобы сделать все

1 Ответов

Рейтинг:
10

Premnath Mali

Где первый параметр=левое поле
второй = верхний
третий = ширина
четвертое = высота

CRect rect =CRect(150, 40, 831, 576);

m_CDialog1->MoveWindow(rect);
m_CDialog1->ShowWindow(SW_SHOW);