AuthDlg.cpp
上传用户:tangyu_668
上传日期:2014-02-27
资源大小:678k
文件大小:4k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2006 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  */
  21. // AuthDlg.cpp : implementation file
  22. //
  23. #include "stdafx.h"
  24. #include "mplayerc.h"
  25. #include "AuthDlg.h"
  26. // CAuthDlg dialog
  27. IMPLEMENT_DYNAMIC(CAuthDlg, CDialog)
  28. CAuthDlg::CAuthDlg(CWnd* pParent /*=NULL*/)
  29. : CDialog(CAuthDlg::IDD, pParent)
  30. , m_username(_T(""))
  31. , m_password(_T(""))
  32. , m_remember(FALSE)
  33. {
  34. }
  35. CAuthDlg::~CAuthDlg()
  36. {
  37. }
  38. void CAuthDlg::DoDataExchange(CDataExchange* pDX)
  39. {
  40. CDialog::DoDataExchange(pDX);
  41. DDX_Control(pDX, IDC_COMBO1, m_usernamectrl);
  42. DDX_Text(pDX, IDC_COMBO1, m_username);
  43. DDX_Text(pDX, IDC_EDIT3, m_password);
  44. DDX_Check(pDX, IDC_CHECK1, m_remember);
  45. }
  46. CString CAuthDlg::DEncrypt(CString str)
  47. {
  48. for(int i = 0; i < str.GetLength(); i++)
  49. str.SetAt(i, str[i]^5);
  50. return str;
  51. }
  52. BEGIN_MESSAGE_MAP(CAuthDlg, CDialog)
  53. ON_BN_CLICKED(IDOK, OnBnClickedOk)
  54. ON_CBN_SELCHANGE(IDC_COMBO1, OnCbnSelchangeCombo1)
  55. ON_EN_SETFOCUS(IDC_EDIT3, OnEnSetfocusEdit3)
  56. END_MESSAGE_MAP()
  57. // CAuthDlg message handlers
  58. BOOL CAuthDlg::OnInitDialog()
  59. {
  60. CDialog::OnInitDialog();
  61. CWinApp* pApp = AfxGetApp();
  62. if(pApp->m_pszRegistryKey)
  63. {
  64. CRegKey hSecKey(pApp->GetSectionKey(ResStr(IDS_R_LOGINS)));
  65. if(hSecKey)
  66. {
  67. int i = 0;
  68. TCHAR username[256], password[256];
  69. while(1)
  70. {
  71. DWORD unlen = countof(username);
  72. DWORD pwlen = sizeof(password);
  73. DWORD type = REG_SZ;
  74. if(ERROR_SUCCESS == RegEnumValue(
  75. hSecKey, i++, username, &unlen, 0, &type, (BYTE*)password, &pwlen))
  76. {
  77. m_logins[username] = DEncrypt(password);
  78. m_usernamectrl.AddString(username);
  79. }
  80. else
  81. {
  82. break;
  83. }
  84. }
  85. }
  86. }
  87. else
  88. {
  89. CAutoVectorPtr<TCHAR> buff;
  90. buff.Allocate(32767/sizeof(TCHAR));
  91. DWORD len = GetPrivateProfileSection(
  92. ResStr(IDS_R_LOGINS), buff, 32767/sizeof(TCHAR), pApp->m_pszProfileName);
  93. TCHAR* p = buff;
  94. while(*p && len > 0)
  95. {
  96. CString str = p;
  97. p += str.GetLength()+1;
  98. len -= str.GetLength()+1;
  99. CAtlList<CString> sl;
  100. Explode(str, sl, '=', 2);
  101. if(sl.GetCount() == 2)
  102. {
  103. m_logins[sl.GetHead()] = DEncrypt(sl.GetTail());
  104. m_usernamectrl.AddString(sl.GetHead());
  105. }
  106. }
  107. }
  108. m_usernamectrl.SetFocus();
  109. return TRUE;  // return TRUE unless you set the focus to a control
  110. // EXCEPTION: OCX Property Pages should return FALSE
  111. }
  112. void CAuthDlg::OnBnClickedOk()
  113. {
  114. UpdateData();
  115. if(!m_username.IsEmpty())
  116. {
  117. CWinApp* pApp = AfxGetApp();
  118. pApp->WriteProfileString(ResStr(IDS_R_LOGINS), m_username, m_remember ? DEncrypt(m_password) : _T(""));
  119. }
  120. OnOK();
  121. }
  122. void CAuthDlg::OnCbnSelchangeCombo1()
  123. {
  124. CString username;
  125. m_usernamectrl.GetLBText(m_usernamectrl.GetCurSel(), username);
  126. CString password;
  127. if(m_logins.Lookup(username, password))
  128. {
  129. m_password = password;
  130. m_remember = TRUE;
  131. UpdateData(FALSE);
  132. }
  133. }
  134. void CAuthDlg::OnEnSetfocusEdit3()
  135. {
  136. UpdateData();
  137. CString password;
  138. if(m_logins.Lookup(m_username, password))
  139. {
  140. m_password = password;
  141. m_remember = TRUE;
  142. UpdateData(FALSE);
  143. }
  144. }