企业即时通讯 - Enterprise Instant Messenger

局域网聊天工具,文字讯息、文件发送、语音通讯、高清视频通讯、远程桌面控制。

用户操作
[即时聊天] [发私信] [加为好友]
FreeEIM StudioID:i_like_cpp
972448次访问,排名32,好友4人,关注者7人。
i_like_cpp的文章
原创 888 篇
翻译 4 篇
转载 69 篇
评论 1148 篇
FreeEIM Studio的公告
最近评论
ScanerKi:#include <stdio.h>

int asm(int s)
{
int t=0;
__asm
{
mov eax, DWORD PTR [ebp+8] ;把s的值传给eax
mov t, eax ;把eax的值传给t
}
printf("- %d……
li_delong:谢谢
li_delong:谢谢
li_delong:谢谢
XUETUJIAN:
文章分类
收藏
相册
EIM 截图
相关软件图片
PI的最精确值
FreeEIM 标签
FreeEIM华军下载
XP SP2 SDK
下载FreeEIM
盛天龙
飞鸽传书
不错的网站
CPPBLOG
局域网聊天
泡妞专家
用VC写Assembly代码(RSS)
百度的Blog(RSS)
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 MFC + Access 用户验证程序(初级数据库编程)收藏

新一篇: 中文名称:案例编程MOOK系列 | 旧一篇: 给恋爱中的女孩的忠告

MFC + Access 用户验证程序(初级数据库编程)

转自:企业即时通讯

软件流程: 弹出对话框,要求输入用户及密码,正确则跳到主对话框,错误则要求重新输入,关闭则什么也不做退出。 三无程序,有用的或刚学ADO的看看。

 

////////////////////////////////////////// stdafx.h

// stdafx.h : include file for standard system include files, //  or project specific include files that are used frequently, but //      are changed infrequently //

#if !defined(AFX_STDAFX_H__B170E8A6_57B5_4B19_A471_C368C30871F1__INCLUDED_) #define AFX_STDAFX_H__B170E8A6_57B5_4B19_A471_C368C30871F1__INCLUDED_

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000

#define VC_EXTRALEAN  // Exclude rarely-used stuff from Windows headers

#include <afxwin.h>         // MFC core and standard components #include <afxext.h>         // MFC extensions #include <afxdisp.h>        // MFC Automation classes #include <afxdtctl.h>  // MFC support for Internet Explorer 4 Common Controls #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h>   // MFC support for Windows Common Controls #endif // _AFX_NO_AFXCMN_SUPPORT

#include <icrsint.h> #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

//{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__B170E8A6_57B5_4B19_A471_C368C30871F1__INCLUDED_) ---------------------------------------------------------------------------------------------------------------------------------------------------

#if !defined(AFX_LOGINDLG_H__C757DD49_652B_41A1_84C3_EC0D3C40A07F__INCLUDED_) #define AFX_LOGINDLG_H__C757DD49_652B_41A1_84C3_EC0D3C40A07F__INCLUDED_

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // LoginDlg.h : header file //

///////////////////////////////////////////////////////////////////////////// // CLoginDlg dialog

class CLoginDlg : public CDialog { // Construction public:  BOOL UserValid();  CLoginDlg(CWnd* pParent = NULL);   // standard constructor

// Dialog Data  //{{AFX_DATA(CLoginDlg)  enum { IDD = IDD_DIALOG1 };   // NOTE: the ClassWizard will add data members here  //}}AFX_DATA

// Overrides  // ClassWizard generated virtual function overrides  //{{AFX_VIRTUAL(CLoginDlg)  protected:  virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support  //}}AFX_VIRTUAL

// Implementation protected:

 // Generated message map functions  //{{AFX_MSG(CLoginDlg)  virtual void OnOK();  virtual void OnCancel();  virtual BOOL OnInitDialog();  //}}AFX_MSG  DECLARE_MESSAGE_MAP() };

//{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_LOGINDLG_H__C757DD49_652B_41A1_84C3_EC0D3C40A07F__INCLUDED_)

---------------------------------------------------------------------------------------------------------------------------------------------------

// LoginDlg.cpp : implementation file //

#include "stdafx.h" #include "userlogin.h" #include "LoginDlg.h" #include "userloginDlg.h"

#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif

///////////////////////////////////////////////////////////////////////////// // CLoginDlg dialog

CLoginDlg::CLoginDlg(CWnd* pParent /*=NULL*/)  : CDialog(CLoginDlg::IDD, pParent) {  //{{AFX_DATA_INIT(CLoginDlg)   // NOTE: the ClassWizard will add member initialization here  //}}AFX_DATA_INIT }

void CLoginDlg::DoDataExchange(CDataExchange* pDX) {  CDialog::DoDataExchange(pDX);  //{{AFX_DATA_MAP(CLoginDlg)   // NOTE: the ClassWizard will add DDX and DDV calls here  //}}AFX_DATA_MAP }

BEGIN_MESSAGE_MAP(CLoginDlg, CDialog)  //{{AFX_MSG_MAP(CLoginDlg)  //}}AFX_MSG_MAP END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////// // CLoginDlg message handlers

void CLoginDlg::OnOK() {  // TODO: Add extra validation here /* char *szBuf = new char[128];  GetDlgItemText(IDC_EDIT1, szBuf, 128);  MessageBox(szBuf);*/  if (! UserValid())   return;

 CDialog::OnOK(); }

void CLoginDlg::OnCancel() {  // TODO: Add extra cleanup here

 CDialog::OnCancel(); }

BOOL CLoginDlg::UserValid() {  _ConnectionPtr &cPtr = ((CUserloginDlg*)GetParent())->m_pConn;  char* szUserName = (char*)((CUserloginDlg*)GetParent())->m_szUserName;

 _RecordsetPtr pRs;  pRs.CreateInstance(__uuidof(Recordset));

 // 确保用户名输入不为空  char szName[128];  GetDlgItemText(IDC_EDIT1, szName, 128);  if (NULL == szName[0])  {   AfxMessageBox("用户名不能为空!");   return FALSE;  }  char szpw[128];  GetDlgItemText(IDC_EDIT2, szpw, 128);  if (NULL == szpw[0])  {   AfxMessageBox("密码不能为空!");   return FALSE;  }

 // 从 account 表里读出用户信息  char szSQL[256];  sprintf(szSQL, "%s%s", "SELECT * FROM account where username='", szName);  strcat(szSQL, "'");

 try  {   HRESULT hr = pRs->Open(szSQL,    cPtr.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);

  // 确保用户存在   if (pRs->adoEOF)   {    AfxMessageBox("用户名无效,请重新输入!");    pRs->Close();    pRs.Release();    return FALSE;   }  }

 catch (_com_error e)  {   AfxMessageBox(e.ErrorMessage());  }

 CString l_str;  variant_t var;

 try  {   var = pRs->GetCollect(_variant_t("password"));   if (var.vt != VT_NULL)   {    l_str = (LPCTSTR)_bstr_t(var);    if (l_str == szpw)    {    // AfxMessageBox("密码正确");     strcpy(szUserName, szName);    }    else    {     AfxMessageBox("密码错误,请重新输入!");     return FALSE;    }   }   else   {    l_str = _T("none");    AfxMessageBox(l_str);    return FALSE;   }  }  catch (_com_error e)  {   AfxMessageBox(e.Description());  }  pRs->Close();  pRs.Release(); }

BOOL CLoginDlg::OnInitDialog() {  CDialog::OnInitDialog();    // TODO: Add extra initialization here  return TRUE;  // return TRUE unless you set the focus to a control                // EXCEPTION: OCX Property Pages should return FALSE }

--------------------------------------------------------------------------------------------------------------------------------------------------

// userlogin.h : main header file for the USERLOGIN application //

#if !defined(AFX_USERLOGIN_H__433A5C98_5C19_49A2_8ACA_5AD5FF116D77__INCLUDED_) #define AFX_USERLOGIN_H__433A5C98_5C19_49A2_8ACA_5AD5FF116D77__INCLUDED_

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__  #error include 'stdafx.h' before including this file for PCH #endif

#include "resource.h"  // main symbols

///////////////////////////////////////////////////////////////////////////// // CUserloginApp: // See userlogin.cpp for the implementation of this class //

class CUserloginApp : public CWinApp { public:  CUserloginApp();

// Overrides  // ClassWizard generated virtual function overrides  //{{AFX_VIRTUAL(CUserloginApp)  public:  virtual BOOL InitInstance();  //}}AFX_VIRTUAL

// Implementation

 //{{AFX_MSG(CUserloginApp)   // NOTE - the ClassWizard will add and remove member functions here.   //    DO NOT EDIT what you see in these blocks of generated code !  //}}AFX_MSG  DECLARE_MESSAGE_MAP() };

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_USERLOGIN_H__433A5C98_5C19_49A2_8ACA_5AD5FF116D77__INCLUDED_) ----------------------------------------------------------------------------------------------------------------------------------------------

// userlogin.cpp : Defines the class behaviors for the application. //

#include "stdafx.h" #include "userlogin.h" #include "userloginDlg.h"

#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif

///////////////////////////////////////////////////////////////////////////// // CUserloginApp

BEGIN_MESSAGE_MAP(CUserloginApp, CWinApp)  //{{AFX_MSG_MAP(CUserloginApp)   // NOTE - the ClassWizard will add and remove mapping macros here.   //    DO NOT EDIT what you see in these blocks of generated code!  //}}AFX_MSG  ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////// // CUserloginApp construction

CUserloginApp::CUserloginApp() {  // TODO: add construction code here,  // Place all significant initialization in InitInstance }

///////////////////////////////////////////////////////////////////////////// // The one and only CUserloginApp object

CUserloginApp theApp;

///////////////////////////////////////////////////////////////////////////// // CUserloginApp initialization

BOOL CUserloginApp::InitInstance() {  OleInitialize(NULL);  AfxEnableControlContainer();

 // Standard initialization  // If you are not using these features and wish to reduce the size  //  of your final executable, you should remove from the following  //  the specific initialization routines you do not need.

#ifdef _AFXDLL  Enable3dControls();   // Call this when using MFC in a shared DLL #else  Enable3dControlsStatic(); // Call this when linking to MFC statically #endif

 CUserloginDlg dlg;  m_pMainWnd = &dlg;  int nResponse = dlg.DoModal();  if (nResponse == IDOK)  {   // TODO: Place code here to handle when the dialog is   //  dismissed with OK  }  else if (nResponse == IDCANCEL)  {   // TODO: Place code here to handle when the dialog is   //  dismissed with Cancel  }

 // Since the dialog has been closed, return FALSE so that we exit the  //  application, rather than start the application's message pump.  return FALSE; }

发表于 @ 2008年06月12日 08:20:15|评论(loading...)|收藏

新一篇: 中文名称:案例编程MOOK系列 | 旧一篇: 给恋爱中的女孩的忠告

评论:没有评论。

发表评论  


登录
Csdn Blog version 3.1a
Copyright © FreeEIM Studio