Мы с Вами все время концентрировались на обработке внутри диалога. Но можно узнать какая кнопка была нажата, если проанализировать возврат функции 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);
В ней предусмотрен код возврата.