其他分享
首页 > 其他分享> > c – 我可以从对话框的DoModal函数返回自定义值吗?

c – 我可以从对话框的DoModal函数返回自定义值吗?

作者:互联网

我想要做的是,在创建一个带有DoModal()的对话框并在框中按OK退出它之后,返回一个自定义值.例如,用户将在对话框中输入的几个字符串.

解决方法:

你不能改变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();

        // ...
    }
}

标签:c,return-value,windows,winapi,mfc
来源: https://codeday.me/bug/20191002/1845457.html