Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 02/09/2024 in all areas

  1. 1 point
    BOOL CLoginScene::_InitUI() { // Encontrar el formulario de la ruta del logo y ocultarlo si existe frmPathLogo = CFormMgr::s_Mgr.Find("frmPathLogo"); if (!frmPathLogo) return false; frmPathLogo->SetIsShow(false); // Encontrar el formulario de la cuenta y ocultarlo si existe, también asignar el manejador de eventos frmAccount = CFormMgr::s_Mgr.Find("frmAccount"); if (!frmAccount) return false; frmAccount->SetIsShow(false); frmAccount->evtEntrustMouseEvent = _evtLoginFrm; // Encontrar el checkbox de guardar cuenta y configurar su estado chkID = dynamic_cast<CCheckBox*>(frmAccount->Find("chkID")); m_bSaveAccount = false; if (chkID) { ifstream inCheck("user\\SavedAccounts\\checkid.dat"); if (inCheck.is_open()) { char szChkID[128] = { 0 }; while (inCheck.getline(szChkID, 128)) { m_bSaveAccount = (Str2Int(szChkID) == 1); chkID->SetIsChecked(m_bSaveAccount); } } else { m_bSaveAccount = false; chkID->SetIsChecked(m_bSaveAccount); } } // Encontrar los campos de ID y contraseña y salir si alguno de ellos no existe edtID = dynamic_cast<CEdit*>(frmAccount->Find("edtID")); edtPassword = dynamic_cast<CEdit*>(frmAccount->Find("edtPassword")); if (!edtID || !edtPassword) return false; // Inicializar la cadena de la cuenta guardada m_sSaveAccount = ""; // Leer la cuenta guardada desde el archivo ifstream in("user\\SavedAccounts\\accounts.dat"); if (in.is_open()) { string line; if (getline(in, line)) { // Extraer la cuenta guardada y configurar el campo de ID si existe istringstream iss(line); getline(iss, m_sSaveAccount, ':'); if (edtID) { edtID->SetCaption(m_sSaveAccount.c_str()); edtID->evtEnter = _evtEnter; edtID->SetIsWrap(true); } // Configurar el campo de contraseña si existe if (edtPassword) { size_t pos = line.find_first_of(":"); if (pos != string::npos) { string encryptedPassword = line.substr(pos + 1); string key = "myencryptionkey"; string decryptedPassword = EncryptionUtils::EncryptDecrypt(encryptedPassword, key); edtPassword->SetIsPassWord(false); edtPassword->SetIsWrap(true); edtPassword->evtEnter = _evtEnter; m_sPassword = decryptedPassword; edtPassword->SetCaption(m_sPassword.c_str()); } } } in.close(); } else { // Manejar caso en el que no se puede leer el archivo de cuenta ofstream outUsername("user\\SavedAccounts\\accounts.dat"); if (outUsername.is_open()) { outUsername << ""; outUsername.close(); } } // Encontrar el formulario del teclado virtual y ocultarlo si existe frmKeyboard = CFormMgr::s_Mgr.Find("frmKeyboard"); if (!frmKeyboard) return false; frmKeyboard->Hide(); // Encontrar el checkbox de cambio de mayúsculas del teclado virtual CCheckBox* chkShift = dynamic_cast<CCheckBox*>(frmKeyboard->Find("chkShift")); if (!chkShift) return false; // Configurar el manejador de eventos de clic del ratón en el teclado virtual frmKeyboard->evtEntrustMouseEvent = _evtKeyboardFromMouseEvent; // Configurar los manejadores de eventos de activación para los campos de ID y contraseña if (edtID) edtID->evtActive = _evtAccountFocus; if (edtPassword) edtPassword->evtActive = _evtAccountFocus; // Encontrar las imágenes de logotipo en el formulario de la cuenta imgLogo1 = dynamic_cast<CImage*>(frmAccount->Find("imgLogo1")); imgLogo2 = dynamic_cast<CImage*>(frmAccount->Find("imgLogo2")); return true; } Quiero agradecer a todos por su ayuda. Gracias a sus sugerencias y colaboración, pude resolver el problema simplificando y eliminando partes innecesarias del código. La optimización ha mejorado significativamente la legibilidad y eficiencia de la implementación. Estoy muy agradecido por su apoyo y orientación. ¡Muchas gracias de nuevo a todos! I want to thank everyone for their help. Thanks to your suggestions and collaboration, I was able to solve the problem by simplifying and removing unnecessary parts of the code. The optimization has significantly improved the readability and efficiency of the implementation. I am very grateful for your support and guidance. Thanks again to all!
  2. 1 point
    @dragontechi std::ifstream inAccounts("user\\SavedAccounts\\accounts.dat"); if (inAccounts.is_open()) { std::string line; std::getline(inAccounts, line); if (!line.empty()) { std::size_t pos = line.find_first_of(":"); if (pos != std::string::npos) { //... } } inAccounts.close(); }
  • Newsletter

    Want to keep up to date with all our latest news and information?
    Sign Up
×
×
  • Create New...