// Login.cpp : 实现文件 // #include "stdafx.h" #include "IDE.h" #include "Login.h" #include "MainFrm.h" #include "md5class.h" #include "StringOperation.h" #include ".\login.h" // CLogin 对话框 IMPLEMENT_DYNAMIC(CLogin, CDialog) CLogin::CLogin(CWnd* pParent /*=NULL*/) : CDialog(CLogin::IDD, pParent) { m_bShutdown = 0; m_bFullScreen = FALSE; m_bRunStatus = FALSE; m_bSavePwd = FALSE; m_bRightButtonDown = false; } CLogin::~CLogin() { } void CLogin::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT_USERID, m_ctrlUserID); DDX_Control(pDX, IDC_EDIT_PWD, m_ctrlPwd); DDX_Control(pDX, IDC_STATIC_HINT, m_ctrlHint); DDX_Control(pDX, IDC_CHK_SAVE_INFO, m_ctrlIsSaveInfo); DDX_Check(pDX, IDC_CHK_FULLSCREEN, m_bFullScreen); DDX_Check(pDX, IDC_CHECK_RUN, m_bRunStatus); DDX_Check(pDX, IDC_CHK_SAVE_INFO, m_bSavePwd); DDX_Control(pDX, IDOK, m_BtnOK); } BEGIN_MESSAGE_MAP(CLogin, CDialog) ON_BN_CLICKED(IDOK, OnBnClickedOk) ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel) ON_WM_SHOWWINDOW() ON_BN_CLICKED(IDC_CHECK_RUN, OnBnClickedRun) // ON_WM_RBUTTONUP() // ON_WM_RBUTTONDOWN() // ON_WM_TIMER() //ON_WM_TIMER() //ON_WM_RBUTTONDBLCLK() //ON_WM_RBUTTONUP() ON_WM_TIMER() ON_WM_RBUTTONDOWN() //ON_WM_NCRBUTTONDOWN() END_MESSAGE_MAP() // CLogin 消息处理程序 void CLogin::OnBnClickedOk() { //m_bRunStatus = TRUE; UpdateData( false ); LoginDBMonitor(); // TODO: 在此添加控件通知处理程序代码 //将对话框中编辑框的数据读取到成员变量中 //if( ::GetKeyState(VK_CONTROL) < 0 ) //{ // m_bRunStatus = false; // UpdateData( false ); //} //else //{ // m_bRunStatus = true; // UpdateData( false ); //} //if( m_bRightButtonDown || m_BtnOK.m_nClick==3 ) //{ // m_bRunStatus = false; // UpdateData( false ); //} //else //{ // m_bRunStatus = true; // UpdateData( false ); //} //UpdateData(TRUE); //g_bFullScreen = m_bFullScreen; //g_bStartRun = m_bRunStatus; //CString strUserID, strPwd; ////检查数据有效性 //m_ctrlUserID.GetWindowText(strUserID); //if(strUserID.IsEmpty()) //{ // //AfxMessageBox(g_strMsgUserNotNULL); // MessageBox(g_strMsgUserNotNULL, g_strTip, MB_ICONWARNING); // m_ctrlUserID.SetFocus(); // return; //} //m_ctrlPwd.GetWindowText(strPwd); //if(strPwd.IsEmpty()) //{ // //AfxMessageBox(g_strMsgPwdNotNULL); // MessageBox(g_strMsgPwdNotNULL, g_strTip, MB_ICONWARNING); // m_ctrlPwd.SetWindowText(""); // m_ctrlPwd.SetFocus(); // return; //} //CMD5 md5; //md5.setPlainText( (char *)(LPCTSTR)strPwd ); // //if( ( ( strcmp(g_strDefaultUserPwd, "") != 0 ) && (strcmp(g_strLoginUserID, (char*)(LPCTSTR)strUserID) != 0 ) ) || // ( strcmp(g_strDefaultUserPwd, "") == 0 ) || // (strcmp(g_strLoginUserID, (char*)(LPCTSTR)strUserID) != 0 ) || // ( strcmp(g_strDefaultUserPwd, strPwd) != 0 ) || // (strcmp(g_strLoginUserID, "") == 0) ) //{ // strPwd = CString(md5.getMD5Digest()); //} // //int nRet = CDBInterface::GetInstancePtr()->ValidateUser((char*)(LPCTSTR)strUserID, (char *)(LPCTSTR)strPwd); ////LOG4C((LOG_NOTICE, "ValidateUser return %d", nRet)); //if( nRet < 1 ) //{ // //AfxMessageBox(g_strMsgUserInvalid); // MessageBox(g_strMsgUserInvalid, g_strTip, MB_ICONWARNING); // //m_ctrlUserID.SetWindowText(""); // m_ctrlPwd.SetWindowText(""); // m_ctrlPwd.SetFocus(); // return; //} //CHAR chStatus[MAX_STATUS_LENGTH + 1] = {0}; //CDBInterface::GetInstancePtr()->ValidateUserEnable( (char*)(LPCTSTR)strUserID, chStatus ); //if( atoi(chStatus) == 1 ) //{ // //AfxMessageBox(g_strMsgUserDisable); // MessageBox(g_strMsgUserDisable, g_strTip, MB_ICONWARNING); // return; //} ////cHn add //if( !m_bShutdown ) //{ // CDBInterface::GetInstancePtr()->GetUserIDByName( strUserID,g_nUserID ); // if( g_bStartRun==0 && -1==PMS_VerifyUserPermit( g_nUserID,PMS_EDIT_STATUS_MANAGE,"" ) ) // { // //AfxMessageBox( g_strNoPermit ); // MessageBox(g_strNoPermit, g_strTip, MB_ICONWARNING); // m_ctrlUserID.SetWindowText(""); // m_ctrlPwd.SetWindowText(""); // m_ctrlUserID.SetFocus(); // return; // } //} //memset(g_strLoginUserID, 0, sizeof(g_strLoginUserID) ); //memset(g_strLoginPwd, 0, sizeof(g_strLoginPwd) ); //memcpy( g_strLoginUserID, (char*)(LPCTSTR)strUserID, strUserID.GetLength() ); //memcpy( g_strLoginPwd, (char*)(LPCTSTR)strPwd, strPwd.GetLength() ); ////=============================================================== //// 写入默认保存的用户信息 //CHAR strFile[MAX_FILE_LENGTH + 1] = ""; //wsprintf(strFile, "%s\\set.ini", g_strDirectory); //WritePrivateProfileString("User", "UserID", g_strLoginUserID, strFile ); //memset(g_strDefaultUserID, 0, sizeof(g_strDefaultUserID) ); //strcpy(g_strDefaultUserID, g_strLoginUserID); //if( m_bSavePwd ) //{ // WritePrivateProfileString("User", "UserPwd", g_strLoginPwd, strFile ); // memset(g_strDefaultUserPwd, 0, sizeof(g_strDefaultUserPwd) ); // strcpy(g_strDefaultUserPwd, g_strLoginPwd); //} //else //{ // WritePrivateProfileString("User", "UserPwd", "", strFile ); // memset(g_strDefaultUserPwd, 0, sizeof(g_strDefaultUserPwd) ); //} //m_sUserID = strUserID; //UpdateData(); //g_bFullScreen = m_bFullScreen; //g_bStartRun = m_bRunStatus; ////寫入系統配置文件 //char Path[_MAX_PATH] = {0}; //strcat(Path, g_strDirectory); // strcat(Path,"\\"); //strcat(Path, _PROJECTDIR); //strcat(Path,"\\"); //strcat(Path, "runpara.ini"); //if ( g_bStartRun ) //{ // WritePrivateProfileString("RUNPARA", "STARTRUN", "1", Path); //} //else //{ // WritePrivateProfileString("RUNPARA", "STARTRUN", "0", Path); //} //if ( g_bFullScreen ) //{ // WritePrivateProfileString("RUNPARA", "FULLSCREEN", "1", Path); //} //else //{ // WritePrivateProfileString("RUNPARA", "FULLSCREEN", "0", Path); //} //OnOK(); } void CLogin::OnRButtonDown(UINT nFlags, CPoint point) { m_bRunStatus = FALSE; UpdateData( false ); CDialog::OnRButtonDown(nFlags, point); } void CLogin::OnBnClickedCancel() { // TODO: 在此添加控件通知处理程序代码 //CMainFrame *pMainFrm=(CMainFrame*)AfxGetMainWnd()->m_hWnd; //CTrapView *pView=(CTrapView*)pMainFrm->GetActiveView(); //::SendMessage(pView->m_hWnd, WM_EXIT, 0, 0); OnCancel(); } BOOL CLogin::OnInitDialog() { CDialog::OnInitDialog(); m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 GetFullScreenInfo(); m_bRunStatus = 1; if( m_bRunStatus ) GetDlgItem(IDC_CHK_FULLSCREEN)->EnableWindow( true ); else GetDlgItem(IDC_CHK_FULLSCREEN)->EnableWindow( false ); // TODO: 在此添加额外的初始化 if( strcmp( g_strDefaultUserID, "" ) ) { m_ctrlUserID.SetWindowText( g_strDefaultUserID ); m_ctrlPwd.SetWindowText( g_strDefaultUserPwd ); if( strcmp( g_strDefaultUserPwd, "" ) ) m_bSavePwd = true; ((CButton *)GetDlgItem(IDC_CHK_SAVE_INFO))->SetCheck( TRUE ); //m_ctrlIsSaveInfo.EnableWindow( FALSE ); } UpdateData(false); SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE); //ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW,SWP_FRAMECHANGED); if( g_iAutoRunSystem==1 && !m_bShutdown ) { ShowWindow( false ); SetTimer( 1,10,NULL ); } // m_BtnOK.SubclassDlgItem(IDOK, this); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CLogin::OnShowWindow(BOOL bShow, UINT nStatus) { CDialog::OnShowWindow(bShow, nStatus); // TODO: 在此处添加消息处理程序代码 m_ctrlUserID.SetFocus(); } void CLogin::GetFullScreenInfo() { // 写入默认保存的用户信息 CHAR strFile[MAX_FILE_LENGTH + 1] = ""; wsprintf(strFile, "%s\\set.ini", g_strDirectory); GetPrivateProfileString("User", "UserID","", g_strLoginUserID,sizeof(g_strLoginUserID), strFile ); memset(g_strDefaultUserID, 0, sizeof(g_strDefaultUserID) ); strcpy(g_strDefaultUserID, g_strLoginUserID); GetPrivateProfileString("User", "UserPwd","", g_strLoginPwd,sizeof(g_strLoginPwd), strFile ); memset(g_strDefaultUserPwd, 0, sizeof(g_strDefaultUserPwd) ); strcpy(g_strDefaultUserPwd, g_strLoginPwd); ///////////////////////////////////////////////////////////////////////////// char Path[_MAX_PATH] = {0}; strcat(Path, g_strDirectory); strcat(Path,"\\"); strcat(Path, _PROJECTDIR); strcat(Path,"\\"); strcat(Path, "runpara.ini"); char RUN[MAX_PATH] = {0}; memset(RUN, 0, sizeof(RUN)); //CString str; if ( GetPrivateProfileString("RUNPARA", "STARTRUN","",RUN, 10, Path) != 0) { g_bStartRun = (RUN[0] == '1' ? true:false); } if ( GetPrivateProfileString("RUNPARA", "FULLSCREEN","",RUN, 10, Path) != 0) { g_bFullScreen = RUN[0] == '1' ? true:false; } m_bRunStatus = g_bStartRun; m_bFullScreen = g_bFullScreen; UpdateData( false ); } void CLogin::OnBnClickedRun() { UpdateData(); if( m_bRunStatus ) GetDlgItem(IDC_CHK_FULLSCREEN)->EnableWindow( true ); else GetDlgItem(IDC_CHK_FULLSCREEN)->EnableWindow( false ); } //void CLogin::OnRButtonUp(UINT nFlags, CPoint point) //{ // // TODO: 在此添加消息处理程序代码和/或调用默认值 // m_bRightButtonDown = false; // CDialog::OnRButtonUp(nFlags, point); //} //void CLogin::OnRButtonDown(UINT nFlags, CPoint point) //{ // UINT uID = GetDlgCtrlID(); // if ( uID = IDOK) // { // m_bRightButtonDown = true; // m_bRunStatus = TRUE; // LoginDBMonitor(); // }else // m_bRightButtonDown = false; // // CDialog::OnRButtonDown(nFlags, point); //} void CLogin::OnTimer(UINT nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 if( nIDEvent==1 ) { KillTimer( 1 ); OnBnClickedOk(); } CDialog::OnTimer(nIDEvent); } void CLogin::LoginDBMonitor() { //if( m_bRightButtonDown || m_BtnOK.m_nClick==3 ) //{ // m_bRunStatus = false; // UpdateData( false ); //} //else //{ // m_bRunStatus = true; // UpdateData( false ); //} UpdateData(TRUE); g_bFullScreen = m_bFullScreen; g_bStartRun = m_bRunStatus; //LOG4C((LOG_NOTICE,"Run = %d",g_bStartRun)); CString strUserID, strPwd; //检查数据有效性 m_ctrlUserID.GetWindowText(strUserID); if(strUserID.IsEmpty()) { //AfxMessageBox(g_strMsgUserNotNULL); MessageBox(g_strMsgUserNotNULL, g_strTip, MB_ICONWARNING); m_ctrlUserID.SetFocus(); return; } m_ctrlPwd.GetWindowText(strPwd); if(strPwd.IsEmpty()) { //AfxMessageBox(g_strMsgPwdNotNULL); MessageBox(g_strMsgPwdNotNULL, g_strTip, MB_ICONWARNING); m_ctrlPwd.SetWindowText(""); m_ctrlPwd.SetFocus(); return; } CMD5 md5; md5.setPlainText( (char *)(LPCTSTR)strPwd ); if( ( ( strcmp(g_strDefaultUserPwd, "") != 0 ) && (strcmp(g_strLoginUserID, (char*)(LPCTSTR)strUserID) != 0 ) ) || ( strcmp(g_strDefaultUserPwd, "") == 0 ) || (strcmp(g_strLoginUserID, (char*)(LPCTSTR)strUserID) != 0 ) || ( strcmp(g_strDefaultUserPwd, strPwd) != 0 ) || (strcmp(g_strLoginUserID, "") == 0) ) { strPwd = CString(md5.getMD5Digest()); } int nRet = -1;//CDBInterface::GetInstancePtr()->ValidateUser((char*)(LPCTSTR)strUserID, (char *)(LPCTSTR)strPwd); //LOG4C((LOG_NOTICE, "ValidateUser return %d", nRet)); if( nRet < 1 ) { //AfxMessageBox(g_strMsgUserInvalid); MessageBox(g_strMsgUserInvalid, g_strTip, MB_ICONWARNING); //m_ctrlUserID.SetWindowText(""); m_ctrlPwd.SetWindowText(""); m_ctrlPwd.SetFocus(); return; } CHAR chStatus[MAX_STATUS_LENGTH + 1] = {0}; //CDBInterface::GetInstancePtr()->ValidateUserEnable( (char*)(LPCTSTR)strUserID, chStatus ); if( atoi(chStatus) == 1 ) { //AfxMessageBox(g_strMsgUserDisable); MessageBox(g_strMsgUserDisable, g_strTip, MB_ICONWARNING); return; } //cHn add if( !m_bShutdown ) { //CDBInterface::GetInstancePtr()->GetUserIDByName( strUserID,g_nUserID ); // if( g_bStartRun==0 && -1==PMS_VerifyUserPermit( g_nUserID,PMS_EDIT_STATUS_MANAGE,"" ) ) // { // //AfxMessageBox( g_strNoPermit ); // MessageBox(g_strNoPermit, g_strTip, MB_ICONWARNING); // m_ctrlUserID.SetWindowText(""); // m_ctrlPwd.SetWindowText(""); // m_ctrlUserID.SetFocus(); // return; // } } memset(g_strLoginUserID, 0, sizeof(g_strLoginUserID) ); memset(g_strLoginPwd, 0, sizeof(g_strLoginPwd) ); memcpy( g_strLoginUserID, (char*)(LPCTSTR)strUserID, strUserID.GetLength() ); memcpy( g_strLoginPwd, (char*)(LPCTSTR)strPwd, strPwd.GetLength() ); //=============================================================== // 写入默认保存的用户信息 CHAR strFile[MAX_FILE_LENGTH + 1] = ""; wsprintf(strFile, "%s\\set.ini", g_strDirectory); WritePrivateProfileString("User", "UserID", g_strLoginUserID, strFile ); memset(g_strDefaultUserID, 0, sizeof(g_strDefaultUserID) ); strcpy(g_strDefaultUserID, g_strLoginUserID); if( m_bSavePwd ) { WritePrivateProfileString("User", "UserPwd", g_strLoginPwd, strFile ); memset(g_strDefaultUserPwd, 0, sizeof(g_strDefaultUserPwd) ); strcpy(g_strDefaultUserPwd, g_strLoginPwd); } else { WritePrivateProfileString("User", "UserPwd", "", strFile ); memset(g_strDefaultUserPwd, 0, sizeof(g_strDefaultUserPwd) ); } m_sUserID = strUserID; UpdateData(); g_bFullScreen = m_bFullScreen; g_bStartRun = m_bRunStatus; //寫入系統配置文件 char Path[_MAX_PATH] = {0}; strcat(Path, g_strDirectory); strcat(Path,"\\"); strcat(Path, _PROJECTDIR); strcat(Path,"\\"); strcat(Path, "runpara.ini"); if ( g_bStartRun ) { WritePrivateProfileString("RUNPARA", "STARTRUN", "1", Path); } else { WritePrivateProfileString("RUNPARA", "STARTRUN", "0", Path); } if ( g_bFullScreen ) { WritePrivateProfileString("RUNPARA", "FULLSCREEN", "1", Path); } else { WritePrivateProfileString("RUNPARA", "FULLSCREEN", "0", Path); } OnOK(); }