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_)
{
// 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_)
关键是你是如何用Login这个类的
if(log.status()==true)
{...}
else
.....
{
// 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("你没有权限进行删除记录,请进行用户认证!");//显示提示信息}
我是这样写的
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的对象外。
{ 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;然后改成上面的那样可以吗?
=======
写成这样试试吧: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("你没有权限进行删除记录,请进行用户认证!");//显示提示信息
}