Вы не можете изменить возвращаемое значение функции DoModal()
, и даже если бы вы могли, я бы не рекомендовал это.Это не идиоматический способ сделать это, и если вы измените его возвращаемое значение на строковый тип, вы потеряете возможность видеть, когда пользователь отменяет диалоговое окно (в этом случае возвращаемое строковое значение должнополностью игнорируется).
Вместо этого добавьте в класс диалогового окна еще одну функцию (или несколько), например, GetUserName()
и GetUserPassword
, а затем запросите значения этих функций после того, как DoModal
вернет IDOK
.
Например, функция, которая отображает диалог и обрабатывает пользовательский ввод, может выглядеть следующим образом:
void CMainWindow::OnLogin()
{
// Construct the dialog box passing the ID of the dialog template resource
CLoginDialog loginDlg(IDD_LOGINDLG);
// Create and show the dialog box
INT_PTR nRet = -1;
nRet = loginDlg.DoModal();
// Check the return value of DoModal
if (nRet == IDOK)
{
// Process the user's input
CString userName = loginDlg.GetUserName();
CString password = loginDlg.GetUserPassword();
// ...
}
}