两个对话框  登录对话框  IDD_LOGIN   注册对话框  IDD_REGISTER,其中包括添加用户这一项
以管理员身份登录后,可以添加用户,普通用户没有这一权限
想在OnBnClickedRegister()函数中判断有没有权限进行操作,需要获得登录时用的用户名
CString str=_T("");
GetDlgItemText( IDD_LOGIN,IDC_EDIT1,str); 
报错,说是没有与参数列表匹配的重载函数。
这种方法能不能获取控件变量的值?应该怎么用呢?
求指导!

解决方案 »

  1.   

    你这个应该用全局变量来做!一个对话框A调用另一个对话框B的控件变量
    必须保证B对话框对象存在且窗体存在,
    可以通过保存控件指针调用.
      

  2.   

    在A中定义一个B对话框对象,只需要取得对话框B的指针传给对话框A就可以获取B对话框内可以访问的任何变量。
      

  3.   


    //你先非模态创建登陆对话框,保存登陆对话框的指针。
    public:
    CLoginDlg *m_pLoginDlg;
    void CRegisterDlg::OnButton1() 
    {
    m_pLoginDlg = new m_pLoginDlg;
    if (m_pLoginDlg->Create(IDD_LOGIN_DIALOG, this))
    {
    m_pLoginDlg->ShowWindow(SW_SHOW);
    }
    }//////////////////////////之后就可以用这个指针去获取注册对话框的成员了。
    void CRegisterDlg::OnButton2() 
    {
    if (m_pLoginDlg != NULL)
    {
    CString str;
    m_pLoginDlg->m_edit1.GetWindowText(str); //获取edit的值
    MessageBox(str);
    }}
      

  4.   

    现在打算用全局变量来实现,但是并没有取到m_username的值
       CLoginDlg dlg;
       dlg.DoModal();
       Cfirstproject1App* myApp=(Cfirstproject1App*)AfxGetApp()   myApp->globalusername=dlg.m_username;//访问变量
    OnBnClickedRegister()
    { Cfirstproject1App* myApp=(Cfirstproject1App*)AfxGetApp();
    if( myApp->globalusername.IsEmpty())
    AfxMessageBox(_T("没有取到用户名!"));
            }
    结果真的没有取到值,请问这是怎么回事?
      

  5.   


    GetDlgItemText( IDD_LOGIN,IDC_EDIT1,str);  
    ---------
    你看到GetDlgItemText有这样的传递参数的吗?
    你构造另个对话框对象的时候将需要的参数传递进入,修改该对话框类的构造函数即可,用来接收传递的参数