Шаг 251 - Инициализация данных и события в DialogBar

Итак, DialogBar у нас есть, только вот список и полоску редактирования надо бы какими-то данными инициализировать. Надо. Вот только как ??? Давайте возмем созданный Вами проект и попробуем проинициализировать элементы на DialogBar.

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	......
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);

	m_wBar.Create(this,IDD_DIALOG1,CBRS_TOP,ID_MY_BAR); 

	CEdit *pEd = (CEdit*) m_wBar.GetDlgItem(IDC_EDIT1);
	pEd->SetWindowText("Edits");
	
	return 0;
}

Мы воспользовались функцией GetDlgItem() для получения доступа к элементу по его идентификатору.

	HWND GetDlgItem( int nID ) const;

И нам пришлось привести типы указателей к указателю на класс. Как сделать реакцию на кнопку в DialogBar ? Для этого можно воспользоваться Class Wizard. На картинке вы увидите идентифкаторы элементов и возможность привязать к ним события.

251.gif (11236 b)

При вызове ClassWizard для диалога, который отражается в DialogBar, у Вас спросят нужно ли создавать новый класс. Нужно ответить нет. Зачем его создавать то ??? Просто нужно указать где будет производиться обработка данного события. Я, например, сделал это в CMainFrame как на рисунке. А вот код.

void CMainFrame::OnButton1() 
{
	AfxMessageBox("Click");	
}

Запустите приложение и Вы увидите, что у Вас кнопка активная и что в поле редактирования внесена надпись.


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