Шаг 85 - Значение возвращаемое диалогом

Мы с Вами все время концентрировались на обработке внутри диалога. Но можно узнать какая кнопка была нажата, если проанализировать возврат функции DoModal(), вот так например.

void CTTT1Dlg::OnButton1() 
{
	CMyDIALOG cm;
	int i=cm.DoModal(); 
	if (i==IDOK)
	{
		AfxMessageBox("OK");
	}
}

Соответственно стает задача, можно ли сделать свою кнопку, которая будет закрывать диалог и возвращать какое-то другое значение. Давайте попробуем. Делаем кнопку Next. Самый простой способ вызвать функцию EndDialog() и передать в нее идентификатор кнопки.

void CMyDIALOG::OnButtonNext() 
{
	EndDialog(IDC_BUTTON_NEXT);
}

И в вызывающем коде можно анализировать это значение.

CMyDIALOG cm;
int i=cm.DoModal(); 
if (i==IDC_BUTTON_NEXT)
{
	AfxMessageBox("Next");
}

Функция EndDialog является аналогом перегруженной функции Win32 API с тем же именем.

::EndDialog(m_hWnd, nResult);

В ней предусмотрен код возврата.


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