一.登陆框中的元素
登陆框中有二个文本控件二个编辑控件二个按钮控件
对其进行操作的话估计也对这六个控件进行操作
二.编辑控件
二个编辑控件
[quote]
 CString m_strUser;
 CString m_strPass;
[/quote]
三.二个按键控件
[quote]
void CLoginDlg::OnOK()
{
 // TODO: Add extra validation here
 CUserSet recordset;
 CString strSQL;
 UpdateData(TRUE);
 if(m_strUser.IsEmpty())
 {
  AfxMessageBox("请输入用户名!");
  m_ctrUser.SetFocus();
  return;
 }
 //检查密码是否输入
 if(m_strPass.IsEmpty())
 {
  AfxMessageBox("请输入密码!");
  m_ctrPass.SetFocus();
  return;
 }
 CLibraryApp*  ptheApp = (CLibraryApp *) AfxGetApp();
 strSQL.Format("select * from user where user='%s' AND passwd='%s'",m_strUser,m_strPass);
 if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
 {
  MessageBox("打开数据库失败!","数据库错误",MB_OK);
  return ;
 } 
 if(recordset.GetRecordCount()==0)
 {
  recordset.Close();
  MessageBox("密码错误,请重新输入!");
  m_strPass="";
  m_ctrPass.SetFocus();
  UpdateData(FALSE);
  
 }
 else
 {
  ptheApp->m_bIsAdmin = recordset.m_isadmin;
  ptheApp->m_strOperator = recordset.m_user;
  recordset.Close();
  CDialog::OnOK();
 }
  
 
}
[/quote]
[quote]
void CLoginDlg::OnCancel()
{
 // TODO: Add extra cleanup here
 
 CDialog::OnCancel();
}[/quote]
关键的问题在确定按键上面
下面我们对确定按键所有的元素分解
CUserSet 是一个定义基类为CRecordset的类
其代码
[quote]
class CUserSet : public CRecordset
{
public:
 CUserSet(CDatabase* pDatabase = NULL);
 DECLARE_DYNAMIC(CUserSet)
// Field/Param Data
 //{{AFX_FIELD(CUserSet, CRecordset)
 CString m_user;
 CString m_passwd;
 BOOL m_isadmin;
 //}}AFX_FIELD

// Overrides
 // ClassWizard generated virtual function overrides
 //{{AFX_VIRTUAL(CUserSet)
 public:
 virtual CString GetDefaultConnect();    // Default connection string
 virtual CString GetDefaultSQL();    // Default SQL for Recordset
 virtual void DoFieldExchange(CFieldExchange* pFX);  // RFX support
 //}}AFX_VIRTUAL
// Implementation
#ifdef _DEBUG
 virtual void AssertValid() const;
 virtual void Dump(CDumpContext& dc) const;
#endif
};[/quote]
CString是系统自动定义的一个类
m_ctrUser是控件的元素代表是一个控件的名称