Шаг 272 - Класс CListBox, изменение размеров

Для начала удалим с диалоговой панели кнопки OK и CANCEL, так как они будут мешать. Создадим два пункта меню. Первый пункт меню это FULL, а второй MINI. И условимся, что сначала инициализироваться список будет как MINI. Итак, создаем два пункта меню. С помощью ClassWizard привяжем к ним события.

void CTestListDlg::OnFull() 
{
	// TODO: Add your command handler code here
}

void CTestListDlg::OnMini() 
{
	// TODO: Add your command handler code here
}

В нашем классе CTestList создадим две функции FULL и MINI вот так:

//////////////////////////////////
// CTestList message handlers

void CTestList::Full(CDialog *cd)
{

}

void CTestList::Mini()
{

}

Функции реакции на выбор меню будут вызывать одноименные функции класса CTestList:

void CTestListDlg::OnFull() 
{
	m_List.Full(this);
}

void CTestListDlg::OnMini() 
{
	m_List.Mini(); 
}

Напишем функции:

void CTestList::Full(CDialog *cd)
{
	CRect cr;
	cd->GetClientRect(cr);
	MoveWindow(cr); 
}

void CTestList::Mini()
{
	MoveWindow(CRect(0,0,100,100));
}

Класс CListBox является наследником CWnd и естественно он умеет двигаться. Для работы мы получаем рабочую область GetClientRect(), а в противном случае просто устанавливаем размеры. Теперь нам надо позаботиться о начальной инициализации размеров:

BOOL CTestListDlg::OnInitDialog()
{
	m_List.Mini(); 
	m_List.AddString("США");
	m_List.AddString("РОССИЯ");
	m_List.AddString("КАНАДА");
	m_List.AddString("ЯПОНИЯ");

	return TRUE;  // return TRUE  unless you set the focus to a control
}

Попробуйте. Размер будет меняться.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 12.11.2000