MFC – использование выпадающего списка (Combo Box)

Рубрика: MFC, Дата: 6 March, 2015, Автор:

Здорова ребятки! Сегодня разберем еще один элемент в mfc называется он Combo Box. Это хз. что за элемент, я только сегодня с ним ознакомился и чисто интуитивно у меня получилось заставить его работать. И так в общем приступим

MFC combo boxМы будем создавать с использованием Combo Box приложение в котором будет диалоговое окно где мы будем выбирать какое нить число и оно будет выводится на экран. Для начала создадим обычное приложение MFC, такое как на скрине ниже.

MFC appДальше заходим в окно ресурсов и добавляем диалог новый

 

mfc add dialog

У нас появился новый диалог, Добавим в него из панели элементов элемент Combo Box и в свойствах Combo Box изменим параметр “Тип” на Раскрывающийся список. На этом все, ничего изменять там идентификаторы и все прочее мы не будем, все будет у нас по умолчанию.

Дальше добавляем класс к нашему диалогу, устанавливаем параметры как на скрине ниже.

mfc combo box dialog

Там создастся два файла. Нам теперь нужно добавить переменную к нашему новому классу CComboBoxDialog, Добавляйте так же как на скрине ниже.

mfc value1

И переопределим функцию для нашего нового класса диалого OnInitDialog и запишем в нее следующий код

BOOL CComboBoxDialog::OnInitDialog()
{
	CDialog::OnInitDialog();

	//получаем указатель на элемент управления списка
    CComboBox* pBox=static_cast<CComboBox*>(GetDlgItem(IDC_COMBO1));
      
	pBox->AddString(L"0 - punct"); 
	pBox->AddString(L"1 - punct"); 
	pBox->AddString(L"2 - punct");
	pBox->AddString(L"3 - punct");
	pBox->AddString(L"4 - punct");
	pBox->AddString(L"5 - punct");
	pBox->AddString(L"6 - punct");

	pBox->SetCurSel(m_data);

	return TRUE;  // return TRUE unless you set the focus to a control
	// Исключение: страница свойств OCX должна возвращать значение FALSE
}

Создание диалога и класса нашего диалогам мы закончили, теперь осталось нам создать пункт меню и вызвать наш диалог. Создадим пункт меню какой нить не важно любой и подпункт диалог, например menu и подпункт Dialog… как на скрине ниже

mfc menu-dialog

Добавим обработчик события к этому меню, он будет находится в классе вида и вот его код.

void Ctest11View::OnMenuDialog()
{
	CComboBoxDialog aDlg;
    aDlg.m_data=m_val;
	
    if(aDlg.DoModal()==IDOK)
    {
        m_val=aDlg.m_data;//получить новый масштаб
        InvalidateRect(0);//пометить все окна как недействительные
    }
}

И не забудьте подключить файл #include “ComboBoxDialog.h” в начале файла. Тут также нужно в класс вида добавить новую переменную закрытую int m_val.

И последнее что осталось сделать – это вывод на экран данных чисел, которые мы будем выбирать в диалоге, для чего в функцию OnDrow класса вида добавим следующий код.

void Ctest11View::OnDraw(CDC* pDC)
{
	Ctest11Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	//рисуем текст
    CString str;
    str.Format(_T("Nomer - %d"),m_val);
    CSize textExetent=pDC->GetTextExtent(str);
    CRect rect(CPoint(100,100),textExetent);//описывающий прямоугольник
    pDC->DrawText(str,rect,DT_CENTER|DT_VCENTER|
            DT_SINGLELINE|DT_NOCLIP);
}

Все тестируем наше приложение!

MFC app exempla

[youtube]https://www.youtube.com/watch?v=Q67GHxyNzAE[/youtube]

 

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *