void Login::OnOK() 
{
// TODO: Add extra validation here
UpdateData(TRUE);//将输入数据保存在编辑框变量中
if(m_user=="345" && m_password=="234")//如果用户认证成功
{
     m_status=true;//共有变量status为真
MessageBox("用户认证成功,欢迎您的使用!");
     m_user="";//清空用户名编辑框内容
     m_password="";//清空密码编辑框内容
     UpdateData(FALSE);//显示编辑框变量内容到编辑框
}
else
{
     m_status=false;//共有变量status为假
MessageBox("用户认证失败!");//发送提示消息框
m_user="";//清空用户名编辑框内容清空密码编辑框内容
         m_password="";
UpdateData(FALSE);//显示编辑框变量内容到编辑框
} CDialog::OnOK();
}
bool Login::status()
{  
return m_status;
}
用户名和密码输入正确后m_status的值还是为false,请问是什么原因!!!
库:Login.h 如下
#if !defined(AFX_LOGIN_H__366FCAB8_BAD1_436F_AB1C_E218ADD9B52F__INCLUDED_)
#define AFX_LOGIN_H__366FCAB8_BAD1_436F_AB1C_E218ADD9B52F__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Login.h : header file
///////////////////////////////////////////////////////////////////////////////
// Login dialogclass Login : public CDialog
{
// Construction
public:
bool status();// virtual void OnOK();
Login(CWnd* pParent = NULL);   // standard constructor// Dialog Data
//{{AFX_DATA(Login)
enum { IDD = IDD_DIALOG1 };
CString m_password;
CString m_user;
    bool m_status;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(Login)
protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
//}}AFX_VIRTUAL// Implementation
protected: // Generated message map functions
//{{AFX_MSG(Login)
virtual void OnOK();
afx_msg void OnUserlogout();
afx_msg void OnUserlogin();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
};//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_LOGIN_H__366FCAB8_BAD1_436F_AB1C_E218ADD9B52F__INCLUDED_)

解决方案 »

  1.   

    用户名和密码输入正确后m_status的值还是为false,请问是什么原因!!!========
    关键是你是如何用Login这个类的
      

  2.   

    这个问题应该很简单吧,你Debug跑一遍流程不就很清楚了。
      

  3.   

    达不到目标不就是错误,你的Login类是如何用的呢?
      

  4.   

    Login log;
    if(log.status()==true)
    {...}
    else
    .....
      

  5.   

    Login 是一个对话框,你都没有DoModal出来,它根本就没有调用OnOK函数,里面的m_status根本就没改变,当然一直返回false了。
      

  6.   

    void CMyView::OnUserlogin() //用户登入
    {
    // TODO: Add your command handler code here
    Login log;
    log.DoModal();    
    }
    void CMyView::OnUserlogout() //用户登出
    {
    // TODO: Add your command handler code here
    Login log1;
    log1.status()==false;
    }void CMyView::Onshanchu() 
    {
    // TODO: Add your control notification handler code here
         Login log2;
         if( log2.status()==true)//用户认证成功
    {      
                    m_addsnum=m_addsname=m_addsub="";
    m_add=0;
    UpdateData(FALSE);
    }
    else//用户认证失败
    MessageBox("你没有权限进行删除记录,请进行用户认证!");//显示提示信息}
    我是这样写的
      

  7.   

    OnOK函数调用的,还是一直返回false
      

  8.   

    你上面的代码中分别定义了三个Login,你要知道,你定义的这三个Login之间没有关系的,比如。
    void CMyView::OnUserlogin() //用户登入
    {
    // TODO: Add your command handler code here
    Login log;
    log.DoModal();   
    }
    你这里的log用DoModal弹出了,你也输入了正确的东西,log.m_status为true;但是Login log2;
    中的m_status并不是true啊。log与log1,log2没有任何关系,除了它们都是Login的对象外。
      

  9.   

    最简单的方法,你应该定义一个全局的Login log;然后在CMyView::OnUserlogin()中可以用log.DoModal()弹出来,输入,然后,在void CMyView::Onshanchu() 中还是用这个log,这样,你前面OnUserlogin所作的工作才有用。
      

  10.   

    void CMyView::OnUserlogin() //用户登入
    { Login log;
      log.DoModal();   
    }
    void CMyView::OnUserlogout() //用户登出
    {
    log.status()==false;
    }void CMyView::Onshanchu()  
    {
    // TODO: Add your control notification handler code here
      if( log.status()==true)//用户认证成功
    {   
      m_addsnum=m_addsname=m_addsub="";
    m_add=0;
    UpdateData(FALSE);
    }
    else//用户认证失败
    MessageBox("你没有权限进行删除记录,请进行用户认证!");//显示提示信息
    }
    我在CMyView库文件中加了个Login log;然后改成上面的那样可以吗?
      

  11.   

    我在CMyView库文件中加了个Login log;然后改成上面的那样可以吗?
    =======
    写成这样试试吧:Login log;//全局变量,定义在函数体外面就行了。
    void CMyView::OnUserlogin() //用户登入
    {   log.DoModal();   
    }
    void CMyView::OnUserlogout() //用户登出
    {
    log.status()==false;
    }
    void CMyView::Onshanchu()   
    {
    // TODO: Add your control notification handler code here
      if( log.status()==true)//用户认证成功
    {   
      m_addsnum=m_addsname=m_addsub="";
    m_add=0;
    UpdateData(FALSE);
    }
    else//用户认证失败
    MessageBox("你没有权限进行删除记录,请进行用户认证!");//显示提示信息
    }