⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwinput.cpp

📁 VC环境下电力系统故障录波数据管理系统
💻 CPP
字号:
// PwInput.cpp : implementation file
//

#include "stdafx.h"
#include "wgl_32.h"
#include "PwInput.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPwInput dialog


CPwInput::CPwInput(CWnd* pParent /*=NULL*/)
	: CDialog(CPwInput::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPwInput)
	m_StrPassWord = _T("");
	//}}AFX_DATA_INIT
}


void CPwInput::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPwInput)
	DDX_Control(pDX, IDC_PASSWORD, m_PWEdit);
	DDX_Text(pDX, IDC_PASSWORD, m_StrPassWord);
	DDV_MaxChars(pDX, m_StrPassWord, 10);
	//}}AFX_DATA_MAP
}


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

/////////////////////////////////////////////////////////////////////////////
// CPwInput message handlers

void CPwInput::OnOK() 
{
	// TODO: Add extra validation here
    //int length = ((CEdit *)GetDlgItem(IDC_PASSWORD))->LineLength(-1);
	//char Wyy[20];
	//sprintf(Wyy, "length = %d", length);
	//AfxMessageBox(Wyy);
   // ((CEdit *)GetDlgItem(IDC_PASSWORD))->GetLine(0, m_StrPassWord.GetBuffer(length));
   // m_StrPassWord.ReleaseBuffer();
	UpdateData(TRUE);
   // AfxMessageBox(m_StrPassWord);
    int length = m_StrPassWord.GetLength();
	if(m_StrPassWord.IsEmpty())CDialog::OnCancel();
    FILE *pwfp ;
    pwfp = fopen("wgl_32pw.pwl", "rb");
    
    if(pwfp == NULL)
      { //文件不存在
       pwfp = fopen("wgl_32pw.pwl", "wb");
       if(pwfp == NULL)
         {AfxMessageBox("不能创建文件,请检查磁盘空间!", MB_OK); return;}
       lstrcpy(m_StrOldPw, "SYSTEM");
       MakePw(m_StrOldPw, pwfp, 0);
       fclose(pwfp);
	   if(lstrcmp(m_StrPassWord.GetBuffer(length), "SYSTEM") == 0 )
          {  
           m_StrPassWord.ReleaseBuffer();  
           CDialog::OnOK(); 
          }
       else
          { 
            m_StrPassWord.ReleaseBuffer(); 
            m_StrPassWord.Empty();
            AfxMessageBox("密码不正确,请重新输入!", MB_OK);
            CDialog::OnCancel(); 
          }
      }
    else
     { //读文件
      if(MakePw(m_StrPassWord.GetBuffer(length), pwfp, 1)==1)
        {
         m_StrPassWord.ReleaseBuffer();
         m_StrPassWord.Empty();
         fclose(pwfp);
         CDialog::OnOK();
        }
      else
        {
         m_StrPassWord.ReleaseBuffer();
         m_StrPassWord.Empty();
         fclose(pwfp);
         Count++;
         if(Count>=3){ CDialog::OnCancel(); }
         AfxMessageBox("密码不正确,请重新输入!", MB_OK);
         return;
        }
     }
}

int CPwInput::MakePw(char *m_Str, FILE *fp, int flag)
{
  
  struct writetofile
         {
          int index;
          int offset;
          int other[8];
          char wyy[18];
          char rest[100];
         }pw;
	int i;	
	if(flag ==0)
		{
			for(i=0; i < (int)lstrlen(m_Str); i++)
				m_Str[i] = m_Str[i] ^ 'w';
			lstrcpy(pw.wyy, m_Str);
			pw.index = rand();
			pw.offset = sizeof(int)*10;
			for(i=0;i<8;i++)
				pw.other[i] = rand();
			fseek(fp, 0L, SEEK_SET);
			fwrite(&pw, sizeof(pw), 1,  fp);
			return (1);
		}
	else if(flag ==1)
		{
			fseek(fp, 0L, SEEK_SET);
			fread(&pw, sizeof(pw), 1,  fp);
			for(i=0; i < (int)lstrlen(pw.wyy); i++)
				pw.wyy[i] = pw.wyy[i] ^  'w';
			if(lstrcmp(pw.wyy, m_Str)==0)
				return (1);
			else return(0);
		}
	else 
	    return (0);
}


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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -