【问题标题】:Get entered info from modal MFC form从模态 MFC 表单中获取输入信息
【发布时间】:2014-05-13 20:30:49
【问题描述】:

我创建了具有Edit Control 的表单CPreparationDlg。然后,我创建了创建模态表单的应用程序,并在其上按 OK 后,我需要将编辑控件中输入的文本读入主程序的变量中。最好的方法是什么?

class CPreparationApp : public CWinApp
{
public:
        BOOL InitInstance();
};


class CPreparationDlg : public  CDialog
{
public:
    enum { IDD = IDD_PREPARATION_DLG };

    CPreparationDlg();
    ~CPreparationDlg();
};


CPreparationDlg::CPreparationDlg()
   : CDialog(CPreparationDlg::IDD)
{
}

CPreparationDlg::~CPreparationDlg()
{
}



BOOL CPreparationApp::InitInstance()
{
    //CPreparationDlg Dlg;
    m_pMainWnd = &Dlg;
    Dlg.DoModal();
  // there I would like to read text info




    return TRUE;


}

CPreparationApp theApp;

【问题讨论】:

    标签: c++ visual-c++ visual-studio-2012 mfc


    【解决方案1】:

    你所问问题的答案:

    您无法从对话框类外部读取或写入对话框上的编辑控件。在调用 DoModal 之前或从 DoModal 返回之后,与 MFC 控件关联的窗口不存在。

    对话框类必须有int、double、string等简单类型的成员变量。

    您可以在构造函数中设置这些变量,也可以在调用 DoModal 之前设置这些变量。

    在 OnOK 处理程序的对话框类中,您将值从控件移动到成员变量。

    DoModal 返回后,您可以从成员变量中检索值。

    您还需要检查 DoModal 的返回值,因为您需要知道用户是使用 Ok 还是 Cancel 退出才能知道返回值是否有效。

    这些是 MFC 对话框的基本原则。

    至于你没有问的问题,贴出来的代码还是不正确的。注释掉的声明 //CPreparationDlg Dlg;表示变量 Dlg 未定义。设置 m_pMainWnd,然后在 InitInstance 中调用 DoModal 似乎也不是 MFC 应用程序的标准用法。

    你需要做更多的研究来了解这一切是如何运作的。

    【讨论】:

    • 以及使用哪种方法从编辑控件复制到成员变量?
    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2015-03-13
    • 2016-12-16
    • 2023-03-10
    • 2017-02-21
    相关资源
    最近更新 更多